From 99c98adb8f94d78b7add5f36c4f2dfc684876831 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Tue, 9 Jun 2026 15:58:10 +0200 Subject: [PATCH 01/24] feat!: remove deprecated Elasticsearch driver BREAKING CHANGE: The Elasticsearch driver has been removed. It was deprecated in v1.6.0. There is no drop-in replacement. --- .github/actions/integration/elasticsearch.sh | 12 - .github/labeler.yml | 4 - .github/workflows/push.yml | 2 +- DEPRECATION.md | 6 +- .../data-sources/elasticsearch.mdx | 75 - .../connect-to-data/data-sources/index.mdx | 3 - .../admin/deployment/providers/aws.mdx | 1 - docs-mintlify/docs.json | 1 - .../configuration/environment-variables.mdx | 38 - .../deployment/providers/aws.mdx | 1 - .../product/administration/pricing.mdx | 2 +- .../configuration/data-sources/_meta.js | 1 - .../data-sources/elasticsearch.mdx | 69 - .../configuration/data-sources/index.mdx | 5 - .../reference/environment-variables.mdx | 38 - docs/redirects-new-docs.json | 10 - docs/redirects.json | 5 - packages/cubejs-backend-shared/src/env.ts | 44 - .../test/db_env_multi.test.ts | 116 - .../test/db_env_single.test.ts | 68 - packages/cubejs-docker/dev.Dockerfile | 2 - packages/cubejs-docker/package.json | 1 - packages/cubejs-docker/package.json.local | 1 - .../cubejs-docker/testing-drivers.Dockerfile | 2 - .../cubejs-elasticsearch-driver/CHANGELOG.md | 2282 ----------------- packages/cubejs-elasticsearch-driver/LICENSE | 202 -- .../cubejs-elasticsearch-driver/README.md | 23 - .../docker-compose.yml | 16 - .../driver/ElasticSearchDriver.js | 187 -- .../driver/index.d.ts | 14 - .../jest.config.js | 11 - .../cubejs-elasticsearch-driver/package.json | 44 - .../ElasticSearchOpenDistro.integration.js | 76 - .../src/adapter/AWSElasticSearchQuery.ts | 43 - .../src/adapter/ElasticSearchQuery.ts | 157 -- .../src/adapter/QueryBuilder.ts | 4 - .../src/adapter/index.ts | 2 - .../src/core/DriverDependencies.ts | 2 - packages/cubejs-server-core/src/core/types.ts | 2 - yarn.lock | 21 - 40 files changed, 6 insertions(+), 3587 deletions(-) delete mode 100755 .github/actions/integration/elasticsearch.sh delete mode 100644 docs-mintlify/admin/connect-to-data/data-sources/elasticsearch.mdx delete mode 100644 docs/content/product/configuration/data-sources/elasticsearch.mdx delete mode 100644 packages/cubejs-elasticsearch-driver/CHANGELOG.md delete mode 100644 packages/cubejs-elasticsearch-driver/LICENSE delete mode 100644 packages/cubejs-elasticsearch-driver/README.md delete mode 100644 packages/cubejs-elasticsearch-driver/docker-compose.yml delete mode 100644 packages/cubejs-elasticsearch-driver/driver/ElasticSearchDriver.js delete mode 100644 packages/cubejs-elasticsearch-driver/driver/index.d.ts delete mode 100644 packages/cubejs-elasticsearch-driver/jest.config.js delete mode 100644 packages/cubejs-elasticsearch-driver/package.json delete mode 100644 packages/cubejs-elasticsearch-driver/test/ElasticSearchOpenDistro.integration.js delete mode 100644 packages/cubejs-schema-compiler/src/adapter/AWSElasticSearchQuery.ts delete mode 100644 packages/cubejs-schema-compiler/src/adapter/ElasticSearchQuery.ts diff --git a/.github/actions/integration/elasticsearch.sh b/.github/actions/integration/elasticsearch.sh deleted file mode 100755 index a8e992bd1e48a..0000000000000 --- a/.github/actions/integration/elasticsearch.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -eo pipefail - -# Debug log for test containers -export DEBUG=testcontainers - -export TEST_ELASTIC_OPENDISTRO_VERSION=1.13.1 - -echo "::group::ElasticSearch Open Distro ${TEST_ELASTIC_OPENDISTRO_VERSION}"; -docker pull amazon/opendistro-for-elasticsearch:${TEST_ELASTIC_OPENDISTRO_VERSION} -yarn lerna run --concurrency 1 --stream --no-prefix integration:elastic -echo "::endgroup::" diff --git a/.github/labeler.yml b/.github/labeler.yml index 4ba956abe5a3f..2c1f7027c041e 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -44,10 +44,6 @@ driver:duckdb: - changed-files: - any-glob-to-any-file: packages/cubejs-duckdb-driver/**/* -driver:elasticsearch: -- changed-files: - - any-glob-to-any-file: packages/cubejs-elasticsearch-driver/**/* - driver:firebolt: - changed-files: - any-glob-to-any-file: packages/cubejs-firebolt-driver/**/* diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 7b7291256fc79..43361a781b0d8 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -409,7 +409,7 @@ jobs: # @see https://github.com/vertica/vertica-containers/issues/64 db: [ 'athena', 'bigquery', 'snowflake', 'trino', - 'clickhouse', 'druid', 'elasticsearch', 'mssql', 'mysql', 'postgres', 'prestodb', + 'clickhouse', 'druid', 'mssql', 'mysql', 'postgres', 'prestodb', 'mysql-aurora-serverless', 'crate', 'mongobi', 'firebolt', # 'dremio' # Commented out because of flaky integration tests # 'vertica' diff --git a/DEPRECATION.md b/DEPRECATION.md index e1ea79ecd51a4..392591f9b00a7 100644 --- a/DEPRECATION.md +++ b/DEPRECATION.md @@ -67,7 +67,7 @@ features: | Deprecated | [`CUBEJS_SCHEDULED_REFRESH_CONCURRENCY`](#cubejs_scheduled_refresh_concurrency) | v1.2.7 | | | Deprecated | [Node.js 20](#nodejs-20) | v1.3.0 | | | Deprecated | [`renewQuery` parameter of the `/v1/load` endpoint](#renewquery-parameter-of-the-v1load-endpoint) | v1.3.73 | | -| Deprecated | [Elasticsearch driver](#elasticsearch-driver) | v1.6.0 | | +| Removed | [Elasticsearch driver](#elasticsearch-driver) | v1.6.0 | v1.7.0 | | Deprecated | [`context_to_roles`](#context-to-roles) | v1.6.4 | | ### Node.js 8 @@ -427,7 +427,9 @@ options and use the new `cache` parameter of the `/v1/load` endpoint instead. **Deprecated in Release: v1.6.0** -The Elasticsearch driver is deprecated and will be removed in a future release. +**Removed in Release: v1.7.0** + +The Elasticsearch driver has been removed. ### `context_to_roles` diff --git a/docs-mintlify/admin/connect-to-data/data-sources/elasticsearch.mdx b/docs-mintlify/admin/connect-to-data/data-sources/elasticsearch.mdx deleted file mode 100644 index ec4544d7707f0..0000000000000 --- a/docs-mintlify/admin/connect-to-data/data-sources/elasticsearch.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Elasticsearch -description: The driver for Elasticsearch is community-supported and is not maintained by Cube or the database vendor. ---- - - - -The driver for Elasticsearch is community-supported and is not maintained by Cube or the database vendor. - - - - - -Elasticsearch driver is deprecated and will be removed in a future release. - - - -## Prerequisites - -To connect to an [Elasticsearch][elasticsearch] database, use [`CUBEJS_DB_URL`](/reference/configuration/environment-variables#cubejs_db_url) -with the username and password embedded in the URL, if required. - - - -If you're not using [Elastic Cloud][elastic-cloud], you **must** specify -[`CUBEJS_DB_ELASTIC_QUERY_FORMAT`](/reference/configuration/environment-variables#cubejs_db_elastic_query_format). - - - -## Setup - -### Manual - -For a self-hosted Elasticsearch instance, add the following to a `.env` file in -your Cube project: - -```dotenv -CUBEJS_DB_TYPE=elasticsearch -CUBEJS_DB_URL=https://my.elasticsearch.host:9200 -CUBEJS_DB_ELASTIC_QUERY_FORMAT=json -``` - -For an Elasticsearch instanced hosted by [Elastic.co][elastic-co], add the -following to a `.env` file in your Cube project: - -```dotenv -CUBEJS_DB_TYPE=elasticsearch -CUBEJS_DB_URL=https://my.elasticsearch.host:9200 -CUBEJS_DB_ELASTIC_APIKEY_ID=VuaCfGcBCdbkQm-e5aOx -CUBEJS_DB_ELASTIC_APIKEY_KEY=ui2lp2axTNmsyakw9tvNnw -``` - -## Environment Variables - -| Environment Variable | Description | Possible Values | Required | -| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | :------: | -| [`CUBEJS_DB_URL`](/reference/configuration/environment-variables#cubejs_db_url) | The URL for a database | A valid database URL for Elasticsearch | ✅ | -| [`CUBEJS_DB_ELASTIC_QUERY_FORMAT`](/reference/configuration/environment-variables#cubejs_db_elastic_query_format) | By default, queries return data in JDBC format, but you can also return data in standard Elasticsearch JDBC, JSON, CSV, YAML or raw formats (only JSON and JDBC are currently supported) | `json`, `jdbc` | ❌ | -| [`CUBEJS_DB_ELASTIC_OPENDISTRO`](/reference/configuration/environment-variables#cubejs_db_elastic_opendistro) | If `true`, then use the Open Distro for Elasticsearch | `true`, `false` | ❌ | -| [`CUBEJS_DB_ELASTIC_APIKEY_ID`](/reference/configuration/environment-variables#cubejs_db_elastic_apikey_id) | [ID of the API key from elastic.co][elastic-docs-api-keys] | A valid Elastic.co API key ID | ❌ | -| [`CUBEJS_DB_ELASTIC_APIKEY_KEY`](/reference/configuration/environment-variables#cubejs_db_elastic_apikey_key) | [Value of the API key from elastic.co][elastic-docs-api-keys] | A valid Elastic.co API key value | ❌ | -| [`CUBEJS_DB_MAX_POOL`](/reference/configuration/environment-variables#cubejs_db_max_pool) | The maximum number of concurrent database connections to pool. Default is `8` | A valid number | ❌ | -| [`CUBEJS_CONCURRENCY`](/reference/configuration/environment-variables#cubejs_concurrency) | The number of [concurrent queries][ref-data-source-concurrency] to the data source | A valid number | ❌ | - -[ref-data-source-concurrency]: /admin/connect-to-data/concurrency#data-source-concurrency -## SSL - -Cube does not require any additional configuration to enable SSL as -Elasticsearch connections are made over HTTPS. - -[elastic-co]: https://elastic.co/ -[elastic-cloud]: https://cloud.elastic.co/ -[elasticsearch]: https://www.elastic.co/elasticsearch/ -[elastic-docs-api-keys]: - https://www.elastic.co/guide/en/kibana/master/api-keys.html#create-api-key diff --git a/docs-mintlify/admin/connect-to-data/data-sources/index.mdx b/docs-mintlify/admin/connect-to-data/data-sources/index.mdx index 49fa42ffbcc8b..d29cab0553b8f 100644 --- a/docs-mintlify/admin/connect-to-data/data-sources/index.mdx +++ b/docs-mintlify/admin/connect-to-data/data-sources/index.mdx @@ -107,9 +107,6 @@ sources. ## Other data sources - - Connect to Elasticsearch. - Connect to MongoDB. diff --git a/docs-mintlify/admin/deployment/providers/aws.mdx b/docs-mintlify/admin/deployment/providers/aws.mdx index f63a75aa218eb..88731f57fe4f2 100644 --- a/docs-mintlify/admin/deployment/providers/aws.mdx +++ b/docs-mintlify/admin/deployment/providers/aws.mdx @@ -21,7 +21,6 @@ Cube Cloud integrates with the following [data sources](/admin/connect-to-data/d - [Amazon Athena](/admin/connect-to-data/data-sources/aws-athena) - [Postgres](/admin/connect-to-data/data-sources/postgres), [Microsoft SQL Server](/admin/connect-to-data/data-sources/ms-sql), [MySQL](/admin/connect-to-data/data-sources/mysql), and [Oracle](/admin/connect-to-data/data-sources/oracle) on [Amazon RDS](https://aws.amazon.com/rds/) - [Hive / SparkSQL](/admin/connect-to-data/data-sources/hive), [Presto](/admin/connect-to-data/data-sources/presto), and [Trino](/admin/connect-to-data/data-sources/trino) on [Amazon EMR](https://aws.amazon.com/emr/) -- [Elasticsearch](/admin/connect-to-data/data-sources/elasticsearch) on [Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/) - [Parquet, CSV, and JSON files](/admin/connect-to-data/data-sources/duckdb) on [Amazon S3](https://aws.amazon.com/s3/) ## Data visualization tools diff --git a/docs-mintlify/docs.json b/docs-mintlify/docs.json index 3e44f5d77961e..709735ceb3a57 100644 --- a/docs-mintlify/docs.json +++ b/docs-mintlify/docs.json @@ -245,7 +245,6 @@ "admin/connect-to-data/data-sources/databricks-jdbc", "admin/connect-to-data/data-sources/druid", "admin/connect-to-data/data-sources/duckdb", - "admin/connect-to-data/data-sources/elasticsearch", "admin/connect-to-data/data-sources/firebolt", "admin/connect-to-data/data-sources/google-bigquery", "admin/connect-to-data/data-sources/hive", diff --git a/docs-mintlify/reference/configuration/environment-variables.mdx b/docs-mintlify/reference/configuration/environment-variables.mdx index 6bf869d010021..82a72ba574b36 100644 --- a/docs-mintlify/reference/configuration/environment-variables.mdx +++ b/docs-mintlify/reference/configuration/environment-variables.mdx @@ -430,42 +430,6 @@ A flag to use credentials chain for secrets for S3 connections. | ----------------------------------------------------- | ---------------------- | --------------------- | | `true`, `false` | `false` | `false` | -## `CUBEJS_DB_ELASTIC_APIKEY_ID` - -The [ID of the API key from elastic.co][elastic-docs-api-keys]. Required when -using Elastic Cloud. - -| Possible Values | Default in Development | Default in Production | -| ----------------------------- | ---------------------- | --------------------- | -| A valid Elastic.co API key ID | N/A | N/A | - -## `CUBEJS_DB_ELASTIC_APIKEY_KEY` - -The [API key from elastic.co][elastic-docs-api-keys]. Required when using -Elastic Cloud. - -| Possible Values | Default in Development | Default in Production | -| -------------------------- | ---------------------- | --------------------- | -| A valid Elastic.co API key | N/A | N/A | - -## `CUBEJS_DB_ELASTIC_OPENDISTRO` - -If `true`, then use the Open Distro for Elasticsearch. - -| Possible Values | Default in Development | Default in Production | -| --------------- | ---------------------- | --------------------- | -| `true`, `false` | N/A | N/A | - -## `CUBEJS_DB_ELASTIC_QUERY_FORMAT` - -By default, queries return data in JDBC format, but you can also return data in -standard Elasticsearch JDBC, JSON, CSV, YAML or raw formats (only JSON and JDBC -are currently supported). - -| Possible Values | Default in Development | Default in Production | -| --------------- | ---------------------- | --------------------- | -| `json`, `jdbc` | N/A | N/A | - ## `CUBEJS_DB_EXPORT_BUCKET` The name of a bucket in cloud storage to store the database export snapshots. @@ -2122,8 +2086,6 @@ The port for a Cube deployment to listen to API connections on. https://docs.databricks.com/data/databricks-file-system.html#mount-object-storage-to-dbfs [databricks-docs-pat]: https://docs.databricks.com/dev-tools/api/latest/authentication.html#token-management -[elastic-docs-api-keys]: - https://www.elastic.co/guide/en/kibana/master/api-keys.html#create-api-key [firebolt-docs-account-name]: https://docs.firebolt.io/managing-your-account/concepts-and-terminology.html#firebolt-account [firebolt-docs-engine-name]: diff --git a/docs/content/product/administration/deployment/providers/aws.mdx b/docs/content/product/administration/deployment/providers/aws.mdx index b2eb06a1ceb5c..d771ac75122cc 100644 --- a/docs/content/product/administration/deployment/providers/aws.mdx +++ b/docs/content/product/administration/deployment/providers/aws.mdx @@ -18,7 +18,6 @@ Cube Cloud integrates with the following [data sources](/product/configuration/d - [Amazon Athena](/product/configuration/data-sources/aws-athena) - [Postgres](/product/configuration/data-sources/postgres), [Microsoft SQL Server](/product/configuration/data-sources/ms-sql), [MySQL](/product/configuration/data-sources/mysql), and [Oracle](/product/configuration/data-sources/oracle) on [Amazon RDS](https://aws.amazon.com/rds/) - [Hive / SparkSQL](/product/configuration/data-sources/hive), [Presto](/product/configuration/data-sources/presto), and [Trino](/product/configuration/data-sources/trino) on [Amazon EMR](https://aws.amazon.com/emr/) -- [Elasticsearch](/product/configuration/data-sources/elasticsearch) on [Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/) - [Parquet, CSV, and JSON files](/product/configuration/data-sources/duckdb) on [Amazon S3](https://aws.amazon.com/s3/) ## Data visualization tools diff --git a/docs/content/product/administration/pricing.mdx b/docs/content/product/administration/pricing.mdx index 9a051a24c7193..541a922848558 100644 --- a/docs/content/product/administration/pricing.mdx +++ b/docs/content/product/administration/pricing.mdx @@ -88,7 +88,7 @@ terms][ref-enterprise-tier-support], and [limits][ref-cloud-limits]. mission-critical production deployments with security and compliance needs.** It offers everything in the [Enterprise product tier](#enterprise) as well as -unlimited pre-aggregation sizes, and support for kSQL and Elasticsearch. Cube +unlimited pre-aggregation sizes, and support for kSQL. Cube Cloud provides a 99.995% uptime SLA for this product tier. You can review its [pricing][cube-pricing], [support diff --git a/docs/content/product/configuration/data-sources/_meta.js b/docs/content/product/configuration/data-sources/_meta.js index d17eb6899dfd6..73d391bcda7de 100644 --- a/docs/content/product/configuration/data-sources/_meta.js +++ b/docs/content/product/configuration/data-sources/_meta.js @@ -6,7 +6,6 @@ export default { "databricks-jdbc": "Databricks", "druid": "Druid", "duckdb": "DuckDB / MotherDuck", - "elasticsearch": "Elasticsearch", "firebolt": "Firebolt", "google-bigquery": "Google BigQuery", "hive": "Hive / SparkSQL", diff --git a/docs/content/product/configuration/data-sources/elasticsearch.mdx b/docs/content/product/configuration/data-sources/elasticsearch.mdx deleted file mode 100644 index ec26d00c30955..0000000000000 --- a/docs/content/product/configuration/data-sources/elasticsearch.mdx +++ /dev/null @@ -1,69 +0,0 @@ -# Elasticsearch - - - - - -Elasticsearch driver is deprecated and will be removed in a future release. - - - -## Prerequisites - -To connect to an [Elasticsearch][elasticsearch] database, use CUBEJS_DB_URL -with the username and password embedded in the URL, if required. - - - -If you're not using [Elastic Cloud][elastic-cloud], you **must** specify -CUBEJS_DB_ELASTIC_QUERY_FORMAT. - - - -## Setup - -### Manual - -For a self-hosted Elasticsearch instance, add the following to a `.env` file in -your Cube project: - -```dotenv -CUBEJS_DB_TYPE=elasticsearch -CUBEJS_DB_URL=https://my.elasticsearch.host:9200 -CUBEJS_DB_ELASTIC_QUERY_FORMAT=json -``` - -For an Elasticsearch instanced hosted by [Elastic.co][elastic-co], add the -following to a `.env` file in your Cube project: - -```dotenv -CUBEJS_DB_TYPE=elasticsearch -CUBEJS_DB_URL=https://my.elasticsearch.host:9200 -CUBEJS_DB_ELASTIC_APIKEY_ID=VuaCfGcBCdbkQm-e5aOx -CUBEJS_DB_ELASTIC_APIKEY_KEY=ui2lp2axTNmsyakw9tvNnw -``` - -## Environment Variables - -| Environment Variable | Description | Possible Values | Required | -| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | :------: | -| CUBEJS_DB_URL | The URL for a database | A valid database URL for Elasticsearch | ✅ | -| CUBEJS_DB_ELASTIC_QUERY_FORMAT | By default, queries return data in JDBC format, but you can also return data in standard Elasticsearch JDBC, JSON, CSV, YAML or raw formats (only JSON and JDBC are currently supported) | `json`, `jdbc` | ❌ | -| CUBEJS_DB_ELASTIC_OPENDISTRO | If `true`, then use the Open Distro for Elasticsearch | `true`, `false` | ❌ | -| CUBEJS_DB_ELASTIC_APIKEY_ID | [ID of the API key from elastic.co][elastic-docs-api-keys] | A valid Elastic.co API key ID | ❌ | -| CUBEJS_DB_ELASTIC_APIKEY_KEY | [Value of the API key from elastic.co][elastic-docs-api-keys] | A valid Elastic.co API key value | ❌ | -| CUBEJS_DB_MAX_POOL | The maximum number of concurrent database connections to pool. Default is `8` | A valid number | ❌ | -| CUBEJS_CONCURRENCY | The number of [concurrent queries][ref-data-source-concurrency] to the data source | A valid number | ❌ | - -[ref-data-source-concurrency]: /product/configuration/concurrency#data-source-concurrency - -## SSL - -Cube does not require any additional configuration to enable SSL as -Elasticsearch connections are made over HTTPS. - -[elastic-co]: https://elastic.co/ -[elastic-cloud]: https://cloud.elastic.co/ -[elasticsearch]: https://www.elastic.co/elasticsearch/ -[elastic-docs-api-keys]: - https://www.elastic.co/guide/en/kibana/master/api-keys.html#create-api-key diff --git a/docs/content/product/configuration/data-sources/index.mdx b/docs/content/product/configuration/data-sources/index.mdx index f575c35d2544f..45e055d44539a 100644 --- a/docs/content/product/configuration/data-sources/index.mdx +++ b/docs/content/product/configuration/data-sources/index.mdx @@ -158,11 +158,6 @@ sources. ## Other data sources - any> = { .asBool() ), - /** **************************************************************** - * ElasticSearch Driver * - ***************************************************************** */ - - /** - * ElasticSearch API Id. - */ - elasticApiId: ({ - dataSource, - preAggregations, - }: DataSourceOpts) => ( - get(keyByDataSource('CUBEJS_DB_ELASTIC_APIKEY_ID', dataSource, preAggregations)).asString() - ), - - /** - * ElasticSearch API Key. - */ - elasticApiKey: ({ - dataSource, - preAggregations, - }: DataSourceOpts) => ( - get(keyByDataSource('CUBEJS_DB_ELASTIC_APIKEY_KEY', dataSource, preAggregations)).asString() - ), - - /** - * ElasticSearch OpenDistro flag. - */ - elasticOpenDistro: ({ - dataSource, - preAggregations, - }: DataSourceOpts) => ( - get(keyByDataSource('CUBEJS_DB_ELASTIC_OPENDISTRO', dataSource, preAggregations)).asString() - ), - - /** - * ElasticSearch query format. - */ - elasticQueryFormat: ({ - dataSource, - preAggregations, - }: DataSourceOpts) => ( - get(keyByDataSource('CUBEJS_DB_ELASTIC_QUERY_FORMAT', dataSource, preAggregations)).asString() - ), - /** **************************************************************** * Firebolt Driver * ***************************************************************** */ diff --git a/packages/cubejs-backend-shared/test/db_env_multi.test.ts b/packages/cubejs-backend-shared/test/db_env_multi.test.ts index c93b0fa4329fb..ea6e7d4cfa771 100644 --- a/packages/cubejs-backend-shared/test/db_env_multi.test.ts +++ b/packages/cubejs-backend-shared/test/db_env_multi.test.ts @@ -1566,122 +1566,6 @@ describe('Multiple datasources', () => { ); }); - test('getEnv("elasticApiId")', () => { - process.env.CUBEJS_DB_ELASTIC_APIKEY_ID = 'default1'; - process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_APIKEY_ID = 'postgres1'; - process.env.CUBEJS_DS_WRONG_DB_ELASTIC_APIKEY_ID = 'wrong1'; - expect(getEnv('elasticApiId', { dataSource: 'default' })).toEqual('default1'); - expect(getEnv('elasticApiId', { dataSource: 'postgres' })).toEqual('postgres1'); - expect(() => getEnv('elasticApiId', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - - process.env.CUBEJS_DB_ELASTIC_APIKEY_ID = 'default2'; - process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_APIKEY_ID = 'postgres2'; - process.env.CUBEJS_DS_WRONG_DB_ELASTIC_APIKEY_ID = 'wrong2'; - expect(getEnv('elasticApiId', { dataSource: 'default' })).toEqual('default2'); - expect(getEnv('elasticApiId', { dataSource: 'postgres' })).toEqual('postgres2'); - expect(() => getEnv('elasticApiId', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - - delete process.env.CUBEJS_DB_ELASTIC_APIKEY_ID; - delete process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_APIKEY_ID; - delete process.env.CUBEJS_DS_WRONG_DB_ELASTIC_APIKEY_ID; - expect(getEnv('elasticApiId', { dataSource: 'default' })).toBeUndefined(); - expect(getEnv('elasticApiId', { dataSource: 'postgres' })).toBeUndefined(); - expect(() => getEnv('elasticApiId', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - }); - - test('getEnv("elasticApiKey")', () => { - process.env.CUBEJS_DB_ELASTIC_APIKEY_KEY = 'default1'; - process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_APIKEY_KEY = 'postgres1'; - process.env.CUBEJS_DS_WRONG_DB_ELASTIC_APIKEY_KEY = 'wrong1'; - expect(getEnv('elasticApiKey', { dataSource: 'default' })).toEqual('default1'); - expect(getEnv('elasticApiKey', { dataSource: 'postgres' })).toEqual('postgres1'); - expect(() => getEnv('elasticApiKey', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - - process.env.CUBEJS_DB_ELASTIC_APIKEY_KEY = 'default2'; - process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_APIKEY_KEY = 'postgres2'; - process.env.CUBEJS_DS_WRONG_DB_ELASTIC_APIKEY_KEY = 'wrong2'; - expect(getEnv('elasticApiKey', { dataSource: 'default' })).toEqual('default2'); - expect(getEnv('elasticApiKey', { dataSource: 'postgres' })).toEqual('postgres2'); - expect(() => getEnv('elasticApiKey', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - - delete process.env.CUBEJS_DB_ELASTIC_APIKEY_KEY; - delete process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_APIKEY_KEY; - delete process.env.CUBEJS_DS_WRONG_DB_ELASTIC_APIKEY_KEY; - expect(getEnv('elasticApiKey', { dataSource: 'default' })).toBeUndefined(); - expect(getEnv('elasticApiKey', { dataSource: 'postgres' })).toBeUndefined(); - expect(() => getEnv('elasticApiKey', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - }); - - test('getEnv("elasticOpenDistro")', () => { - process.env.CUBEJS_DB_ELASTIC_OPENDISTRO = 'default1'; - process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_OPENDISTRO = 'postgres1'; - process.env.CUBEJS_DS_WRONG_DB_ELASTIC_OPENDISTRO = 'wrong1'; - expect(getEnv('elasticOpenDistro', { dataSource: 'default' })).toEqual('default1'); - expect(getEnv('elasticOpenDistro', { dataSource: 'postgres' })).toEqual('postgres1'); - expect(() => getEnv('elasticOpenDistro', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - - process.env.CUBEJS_DB_ELASTIC_OPENDISTRO = 'default2'; - process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_OPENDISTRO = 'postgres2'; - process.env.CUBEJS_DS_WRONG_DB_ELASTIC_OPENDISTRO = 'wrong2'; - expect(getEnv('elasticOpenDistro', { dataSource: 'default' })).toEqual('default2'); - expect(getEnv('elasticOpenDistro', { dataSource: 'postgres' })).toEqual('postgres2'); - expect(() => getEnv('elasticOpenDistro', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - - delete process.env.CUBEJS_DB_ELASTIC_OPENDISTRO; - delete process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_OPENDISTRO; - delete process.env.CUBEJS_DS_WRONG_DB_ELASTIC_OPENDISTRO; - expect(getEnv('elasticOpenDistro', { dataSource: 'default' })).toBeUndefined(); - expect(getEnv('elasticOpenDistro', { dataSource: 'postgres' })).toBeUndefined(); - expect(() => getEnv('elasticOpenDistro', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - }); - - test('getEnv("elasticQueryFormat")', () => { - process.env.CUBEJS_DB_ELASTIC_QUERY_FORMAT = 'default1'; - process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_QUERY_FORMAT = 'postgres1'; - process.env.CUBEJS_DS_WRONG_DB_ELASTIC_QUERY_FORMAT = 'wrong1'; - expect(getEnv('elasticQueryFormat', { dataSource: 'default' })).toEqual('default1'); - expect(getEnv('elasticQueryFormat', { dataSource: 'postgres' })).toEqual('postgres1'); - expect(() => getEnv('elasticQueryFormat', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - - process.env.CUBEJS_DB_ELASTIC_QUERY_FORMAT = 'default2'; - process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_QUERY_FORMAT = 'postgres2'; - process.env.CUBEJS_DS_WRONG_DB_ELASTIC_QUERY_FORMAT = 'wrong2'; - expect(getEnv('elasticQueryFormat', { dataSource: 'default' })).toEqual('default2'); - expect(getEnv('elasticQueryFormat', { dataSource: 'postgres' })).toEqual('postgres2'); - expect(() => getEnv('elasticQueryFormat', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - - delete process.env.CUBEJS_DB_ELASTIC_QUERY_FORMAT; - delete process.env.CUBEJS_DS_POSTGRES_DB_ELASTIC_QUERY_FORMAT; - delete process.env.CUBEJS_DS_WRONG_DB_ELASTIC_QUERY_FORMAT; - expect(getEnv('elasticQueryFormat', { dataSource: 'default' })).toBeUndefined(); - expect(getEnv('elasticQueryFormat', { dataSource: 'postgres' })).toBeUndefined(); - expect(() => getEnv('elasticQueryFormat', { dataSource: 'wrong' })).toThrow( - 'The wrong data source is missing in the declared CUBEJS_DATASOURCES.' - ); - }); - test('getEnv("fireboltApiEndpoint")', () => { process.env.CUBEJS_FIREBOLT_API_ENDPOINT = 'default1'; process.env.CUBEJS_DS_POSTGRES_FIREBOLT_API_ENDPOINT = 'postgres1'; diff --git a/packages/cubejs-backend-shared/test/db_env_single.test.ts b/packages/cubejs-backend-shared/test/db_env_single.test.ts index 411aa0eb79558..adc04585701fb 100644 --- a/packages/cubejs-backend-shared/test/db_env_single.test.ts +++ b/packages/cubejs-backend-shared/test/db_env_single.test.ts @@ -986,74 +986,6 @@ describe('Single datasources', () => { expect(getEnv('clickhouseCompression', { dataSource: 'wrong' })).toEqual(false); }); - test('getEnv("elasticApiId")', () => { - process.env.CUBEJS_DB_ELASTIC_APIKEY_ID = 'default1'; - expect(getEnv('elasticApiId', { dataSource: 'default' })).toEqual('default1'); - expect(getEnv('elasticApiId', { dataSource: 'postgres' })).toEqual('default1'); - expect(getEnv('elasticApiId', { dataSource: 'wrong' })).toEqual('default1'); - - process.env.CUBEJS_DB_ELASTIC_APIKEY_ID = 'default2'; - expect(getEnv('elasticApiId', { dataSource: 'default' })).toEqual('default2'); - expect(getEnv('elasticApiId', { dataSource: 'postgres' })).toEqual('default2'); - expect(getEnv('elasticApiId', { dataSource: 'wrong' })).toEqual('default2'); - - delete process.env.CUBEJS_DB_ELASTIC_APIKEY_ID; - expect(getEnv('elasticApiId', { dataSource: 'default' })).toBeUndefined(); - expect(getEnv('elasticApiId', { dataSource: 'postgres' })).toBeUndefined(); - expect(getEnv('elasticApiId', { dataSource: 'wrong' })).toBeUndefined(); - }); - - test('getEnv("elasticApiKey")', () => { - process.env.CUBEJS_DB_ELASTIC_APIKEY_KEY = 'default1'; - expect(getEnv('elasticApiKey', { dataSource: 'default' })).toEqual('default1'); - expect(getEnv('elasticApiKey', { dataSource: 'postgres' })).toEqual('default1'); - expect(getEnv('elasticApiKey', { dataSource: 'wrong' })).toEqual('default1'); - - process.env.CUBEJS_DB_ELASTIC_APIKEY_KEY = 'default2'; - expect(getEnv('elasticApiKey', { dataSource: 'default' })).toEqual('default2'); - expect(getEnv('elasticApiKey', { dataSource: 'postgres' })).toEqual('default2'); - expect(getEnv('elasticApiKey', { dataSource: 'wrong' })).toEqual('default2'); - - delete process.env.CUBEJS_DB_ELASTIC_APIKEY_KEY; - expect(getEnv('elasticApiKey', { dataSource: 'default' })).toBeUndefined(); - expect(getEnv('elasticApiKey', { dataSource: 'postgres' })).toBeUndefined(); - expect(getEnv('elasticApiKey', { dataSource: 'wrong' })).toBeUndefined(); - }); - - test('getEnv("elasticOpenDistro")', () => { - process.env.CUBEJS_DB_ELASTIC_OPENDISTRO = 'default1'; - expect(getEnv('elasticOpenDistro', { dataSource: 'default' })).toEqual('default1'); - expect(getEnv('elasticOpenDistro', { dataSource: 'postgres' })).toEqual('default1'); - expect(getEnv('elasticOpenDistro', { dataSource: 'wrong' })).toEqual('default1'); - - process.env.CUBEJS_DB_ELASTIC_OPENDISTRO = 'default2'; - expect(getEnv('elasticOpenDistro', { dataSource: 'default' })).toEqual('default2'); - expect(getEnv('elasticOpenDistro', { dataSource: 'postgres' })).toEqual('default2'); - expect(getEnv('elasticOpenDistro', { dataSource: 'wrong' })).toEqual('default2'); - - delete process.env.CUBEJS_DB_ELASTIC_OPENDISTRO; - expect(getEnv('elasticOpenDistro', { dataSource: 'default' })).toBeUndefined(); - expect(getEnv('elasticOpenDistro', { dataSource: 'postgres' })).toBeUndefined(); - expect(getEnv('elasticOpenDistro', { dataSource: 'wrong' })).toBeUndefined(); - }); - - test('getEnv("elasticQueryFormat")', () => { - process.env.CUBEJS_DB_ELASTIC_QUERY_FORMAT = 'default1'; - expect(getEnv('elasticQueryFormat', { dataSource: 'default' })).toEqual('default1'); - expect(getEnv('elasticQueryFormat', { dataSource: 'postgres' })).toEqual('default1'); - expect(getEnv('elasticQueryFormat', { dataSource: 'wrong' })).toEqual('default1'); - - process.env.CUBEJS_DB_ELASTIC_QUERY_FORMAT = 'default2'; - expect(getEnv('elasticQueryFormat', { dataSource: 'default' })).toEqual('default2'); - expect(getEnv('elasticQueryFormat', { dataSource: 'postgres' })).toEqual('default2'); - expect(getEnv('elasticQueryFormat', { dataSource: 'wrong' })).toEqual('default2'); - - delete process.env.CUBEJS_DB_ELASTIC_QUERY_FORMAT; - expect(getEnv('elasticQueryFormat', { dataSource: 'default' })).toBeUndefined(); - expect(getEnv('elasticQueryFormat', { dataSource: 'postgres' })).toBeUndefined(); - expect(getEnv('elasticQueryFormat', { dataSource: 'wrong' })).toBeUndefined(); - }); - test('getEnv("fireboltApiEndpoint")', () => { process.env.CUBEJS_FIREBOLT_API_ENDPOINT = 'default1'; expect(getEnv('fireboltApiEndpoint', { dataSource: 'default' })).toEqual('default1'); diff --git a/packages/cubejs-docker/dev.Dockerfile b/packages/cubejs-docker/dev.Dockerfile index d07058d87058a..9cf9ca88cbd16 100644 --- a/packages/cubejs-docker/dev.Dockerfile +++ b/packages/cubejs-docker/dev.Dockerfile @@ -50,7 +50,6 @@ COPY packages/cubejs-crate-driver/package.json packages/cubejs-crate-driver/pack COPY packages/cubejs-dremio-driver/package.json packages/cubejs-dremio-driver/package.json COPY packages/cubejs-druid-driver/package.json packages/cubejs-druid-driver/package.json COPY packages/cubejs-duckdb-driver/package.json packages/cubejs-duckdb-driver/package.json -COPY packages/cubejs-elasticsearch-driver/package.json packages/cubejs-elasticsearch-driver/package.json COPY packages/cubejs-firebolt-driver/package.json packages/cubejs-firebolt-driver/package.json COPY packages/cubejs-hive-driver/package.json packages/cubejs-hive-driver/package.json COPY packages/cubejs-mongobi-driver/package.json packages/cubejs-mongobi-driver/package.json @@ -126,7 +125,6 @@ COPY packages/cubejs-crate-driver/ packages/cubejs-crate-driver/ COPY packages/cubejs-dremio-driver/ packages/cubejs-dremio-driver/ COPY packages/cubejs-druid-driver/ packages/cubejs-druid-driver/ COPY packages/cubejs-duckdb-driver/ packages/cubejs-duckdb-driver/ -COPY packages/cubejs-elasticsearch-driver/ packages/cubejs-elasticsearch-driver/ COPY packages/cubejs-firebolt-driver/ packages/cubejs-firebolt-driver/ COPY packages/cubejs-hive-driver/ packages/cubejs-hive-driver/ COPY packages/cubejs-mongobi-driver/ packages/cubejs-mongobi-driver/ diff --git a/packages/cubejs-docker/package.json b/packages/cubejs-docker/package.json index 5efb56f46e477..8d1c2b5c5efb2 100644 --- a/packages/cubejs-docker/package.json +++ b/packages/cubejs-docker/package.json @@ -18,7 +18,6 @@ "@cubejs-backend/dremio-driver": "1.6.67", "@cubejs-backend/druid-driver": "1.6.67", "@cubejs-backend/duckdb-driver": "1.6.67", - "@cubejs-backend/elasticsearch-driver": "1.6.67", "@cubejs-backend/firebolt-driver": "1.6.67", "@cubejs-backend/hive-driver": "1.6.67", "@cubejs-backend/ksql-driver": "1.6.67", diff --git a/packages/cubejs-docker/package.json.local b/packages/cubejs-docker/package.json.local index 1be5e72927ddf..2a5beb1d3e3b5 100644 --- a/packages/cubejs-docker/package.json.local +++ b/packages/cubejs-docker/package.json.local @@ -21,7 +21,6 @@ "@cubejs-backend/dremio-driver": "file:/cube-build/packages/cubejs-dremio-driver", "@cubejs-backend/druid-driver": "file:/cube-build/packages/cubejs-druid-driver", "@cubejs-backend/duckdb-driver": "file:/cube-build/packages/cubejs-duckdb-driver", - "@cubejs-backend/elasticsearch-driver": "file:/cube-build/packages/cubejs-elasticsearch-driver", "@cubejs-backend/firebolt-driver": "file:/cube-build/packages/cubejs-firebolt-driver", "@cubejs-backend/hive-driver": "file:/cube-build/packages/cubejs-hive-driver", "@cubejs-backend/ksql-driver": "file:/cube-build/packages/cubejs-ksql-driver", diff --git a/packages/cubejs-docker/testing-drivers.Dockerfile b/packages/cubejs-docker/testing-drivers.Dockerfile index e7da9e95793d5..a5f9427a1721e 100644 --- a/packages/cubejs-docker/testing-drivers.Dockerfile +++ b/packages/cubejs-docker/testing-drivers.Dockerfile @@ -46,7 +46,6 @@ COPY packages/cubejs-crate-driver/package.json packages/cubejs-crate-driver/pack COPY packages/cubejs-dremio-driver/package.json packages/cubejs-dremio-driver/package.json COPY packages/cubejs-druid-driver/package.json packages/cubejs-druid-driver/package.json COPY packages/cubejs-duckdb-driver/package.json packages/cubejs-duckdb-driver/package.json -COPY packages/cubejs-elasticsearch-driver/package.json packages/cubejs-elasticsearch-driver/package.json COPY packages/cubejs-firebolt-driver/package.json packages/cubejs-firebolt-driver/package.json COPY packages/cubejs-hive-driver/package.json packages/cubejs-hive-driver/package.json COPY packages/cubejs-mongobi-driver/package.json packages/cubejs-mongobi-driver/package.json @@ -121,7 +120,6 @@ COPY packages/cubejs-crate-driver/ packages/cubejs-crate-driver/ COPY packages/cubejs-dremio-driver/ packages/cubejs-dremio-driver/ COPY packages/cubejs-druid-driver/ packages/cubejs-druid-driver/ COPY packages/cubejs-duckdb-driver/ packages/cubejs-duckdb-driver/ -COPY packages/cubejs-elasticsearch-driver/ packages/cubejs-elasticsearch-driver/ COPY packages/cubejs-firebolt-driver/ packages/cubejs-firebolt-driver/ COPY packages/cubejs-hive-driver/ packages/cubejs-hive-driver/ COPY packages/cubejs-mongobi-driver/ packages/cubejs-mongobi-driver/ diff --git a/packages/cubejs-elasticsearch-driver/CHANGELOG.md b/packages/cubejs-elasticsearch-driver/CHANGELOG.md deleted file mode 100644 index 6a59a8da3c047..0000000000000 --- a/packages/cubejs-elasticsearch-driver/CHANGELOG.md +++ /dev/null @@ -1,2282 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.66](https://github.com/cube-js/cube/compare/v1.6.65...v1.6.66) (2026-07-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.65](https://github.com/cube-js/cube/compare/v1.6.64...v1.6.65) (2026-07-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.64](https://github.com/cube-js/cube/compare/v1.6.63...v1.6.64) (2026-06-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.63](https://github.com/cube-js/cube/compare/v1.6.62...v1.6.63) (2026-06-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.62](https://github.com/cube-js/cube/compare/v1.6.61...v1.6.62) (2026-06-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.61](https://github.com/cube-js/cube/compare/v1.6.60...v1.6.61) (2026-06-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.60](https://github.com/cube-js/cube/compare/v1.6.59...v1.6.60) (2026-06-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.59](https://github.com/cube-js/cube/compare/v1.6.58...v1.6.59) (2026-06-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.58](https://github.com/cube-js/cube/compare/v1.6.57...v1.6.58) (2026-06-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.57](https://github.com/cube-js/cube/compare/v1.6.56...v1.6.57) (2026-06-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.56](https://github.com/cube-js/cube/compare/v1.6.55...v1.6.56) (2026-06-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.55](https://github.com/cube-js/cube/compare/v1.6.54...v1.6.55) (2026-06-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.54](https://github.com/cube-js/cube/compare/v1.6.53...v1.6.54) (2026-06-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.53](https://github.com/cube-js/cube/compare/v1.6.52...v1.6.53) (2026-06-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.52](https://github.com/cube-js/cube/compare/v1.6.51...v1.6.52) (2026-05-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.51](https://github.com/cube-js/cube/compare/v1.6.50...v1.6.51) (2026-05-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.50](https://github.com/cube-js/cube/compare/v1.6.49...v1.6.50) (2026-05-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.49](https://github.com/cube-js/cube/compare/v1.6.48...v1.6.49) (2026-05-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.48](https://github.com/cube-js/cube/compare/v1.6.47...v1.6.48) (2026-05-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.47](https://github.com/cube-js/cube/compare/v1.6.46...v1.6.47) (2026-05-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.46](https://github.com/cube-js/cube/compare/v1.6.45...v1.6.46) (2026-05-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.45](https://github.com/cube-js/cube/compare/v1.6.44...v1.6.45) (2026-05-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.44](https://github.com/cube-js/cube/compare/v1.6.43...v1.6.44) (2026-05-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.43](https://github.com/cube-js/cube/compare/v1.6.42...v1.6.43) (2026-05-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.42](https://github.com/cube-js/cube/compare/v1.6.41...v1.6.42) (2026-05-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.41](https://github.com/cube-js/cube/compare/v1.6.40...v1.6.41) (2026-05-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.40](https://github.com/cube-js/cube/compare/v1.6.39...v1.6.40) (2026-04-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.39](https://github.com/cube-js/cube/compare/v1.6.38...v1.6.39) (2026-04-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.38](https://github.com/cube-js/cube/compare/v1.6.37...v1.6.38) (2026-04-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.37](https://github.com/cube-js/cube/compare/v1.6.36...v1.6.37) (2026-04-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.36](https://github.com/cube-js/cube/compare/v1.6.35...v1.6.36) (2026-04-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.35](https://github.com/cube-js/cube/compare/v1.6.34...v1.6.35) (2026-04-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.34](https://github.com/cube-js/cube/compare/v1.6.33...v1.6.34) (2026-04-14) - -### Features - -- Support pre-aggregation-specific data source configuration ([#10587](https://github.com/cube-js/cube/issues/10587)) ([04eed5d](https://github.com/cube-js/cube/commit/04eed5d5ba3c1ceb8cda3c13eebf7f354eb61f48)) - -## [1.6.33](https://github.com/cube-js/cube/compare/v1.6.32...v1.6.33) (2026-04-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.32](https://github.com/cube-js/cube/compare/v1.6.31...v1.6.32) (2026-04-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.31](https://github.com/cube-js/cube/compare/v1.6.30...v1.6.31) (2026-04-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.30](https://github.com/cube-js/cube/compare/v1.6.29...v1.6.30) (2026-04-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.29](https://github.com/cube-js/cube/compare/v1.6.28...v1.6.29) (2026-03-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.28](https://github.com/cube-js/cube/compare/v1.6.27...v1.6.28) (2026-03-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.27](https://github.com/cube-js/cube/compare/v1.6.26...v1.6.27) (2026-03-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.26](https://github.com/cube-js/cube/compare/v1.6.25...v1.6.26) (2026-03-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.25](https://github.com/cube-js/cube/compare/v1.6.24...v1.6.25) (2026-03-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.24](https://github.com/cube-js/cube/compare/v1.6.23...v1.6.24) (2026-03-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.23](https://github.com/cube-js/cube/compare/v1.6.22...v1.6.23) (2026-03-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.22](https://github.com/cube-js/cube/compare/v1.6.21...v1.6.22) (2026-03-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.21](https://github.com/cube-js/cube/compare/v1.6.20...v1.6.21) (2026-03-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.20](https://github.com/cube-js/cube/compare/v1.6.19...v1.6.20) (2026-03-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.19](https://github.com/cube-js/cube/compare/v1.6.18...v1.6.19) (2026-03-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.18](https://github.com/cube-js/cube/compare/v1.6.17...v1.6.18) (2026-03-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.17](https://github.com/cube-js/cube/compare/v1.6.16...v1.6.17) (2026-02-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.16](https://github.com/cube-js/cube/compare/v1.6.15...v1.6.16) (2026-02-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.15](https://github.com/cube-js/cube/compare/v1.6.14...v1.6.15) (2026-02-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.14](https://github.com/cube-js/cube/compare/v1.6.13...v1.6.14) (2026-02-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.13](https://github.com/cube-js/cube/compare/v1.6.12...v1.6.13) (2026-02-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.12](https://github.com/cube-js/cube/compare/v1.6.11...v1.6.12) (2026-02-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.11](https://github.com/cube-js/cube/compare/v1.6.10...v1.6.11) (2026-02-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.10](https://github.com/cube-js/cube/compare/v1.6.9...v1.6.10) (2026-02-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.9](https://github.com/cube-js/cube/compare/v1.6.8...v1.6.9) (2026-02-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.8](https://github.com/cube-js/cube/compare/v1.6.7...v1.6.8) (2026-02-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.7](https://github.com/cube-js/cube/compare/v1.6.6...v1.6.7) (2026-01-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.6](https://github.com/cube-js/cube/compare/v1.6.5...v1.6.6) (2026-01-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.5](https://github.com/cube-js/cube/compare/v1.6.4...v1.6.5) (2026-01-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.4](https://github.com/cube-js/cube/compare/v1.6.3...v1.6.4) (2026-01-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.3](https://github.com/cube-js/cube/compare/v1.6.2...v1.6.3) (2026-01-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.2](https://github.com/cube-js/cube/compare/v1.6.1...v1.6.2) (2026-01-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.6.1](https://github.com/cube-js/cube/compare/v1.6.0...v1.6.1) (2025-12-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.15](https://github.com/cube-js/cube/compare/v1.5.14...v1.5.15) (2025-12-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.14](https://github.com/cube-js/cube/compare/v1.5.13...v1.5.14) (2025-12-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.13](https://github.com/cube-js/cube/compare/v1.5.12...v1.5.13) (2025-12-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.12](https://github.com/cube-js/cube/compare/v1.5.11...v1.5.12) (2025-12-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.11](https://github.com/cube-js/cube/compare/v1.5.10...v1.5.11) (2025-12-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.10](https://github.com/cube-js/cube/compare/v1.5.9...v1.5.10) (2025-11-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.9](https://github.com/cube-js/cube/compare/v1.5.8...v1.5.9) (2025-11-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.8](https://github.com/cube-js/cube/compare/v1.5.7...v1.5.8) (2025-11-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.7](https://github.com/cube-js/cube/compare/v1.5.6...v1.5.7) (2025-11-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.6](https://github.com/cube-js/cube/compare/v1.5.5...v1.5.6) (2025-11-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.5](https://github.com/cube-js/cube/compare/v1.5.4...v1.5.5) (2025-11-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.4](https://github.com/cube-js/cube/compare/v1.5.3...v1.5.4) (2025-11-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.3](https://github.com/cube-js/cube/compare/v1.5.2...v1.5.3) (2025-11-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.2](https://github.com/cube-js/cube/compare/v1.5.1...v1.5.2) (2025-11-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.5.1](https://github.com/cube-js/cube/compare/v1.5.0...v1.5.1) (2025-11-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [1.5.0](https://github.com/cube-js/cube/compare/v1.4.0...v1.5.0) (2025-10-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.85](https://github.com/cube-js/cube/compare/v1.3.84...v1.3.85) (2025-10-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.84](https://github.com/cube-js/cube/compare/v1.3.83...v1.3.84) (2025-10-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.83](https://github.com/cube-js/cube/compare/v1.3.82...v1.3.83) (2025-10-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.82](https://github.com/cube-js/cube/compare/v1.3.81...v1.3.82) (2025-10-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.81](https://github.com/cube-js/cube/compare/v1.3.80...v1.3.81) (2025-10-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.80](https://github.com/cube-js/cube/compare/v1.3.79...v1.3.80) (2025-10-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.79](https://github.com/cube-js/cube/compare/v1.3.78...v1.3.79) (2025-10-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.78](https://github.com/cube-js/cube/compare/v1.3.77...v1.3.78) (2025-10-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.77](https://github.com/cube-js/cube/compare/v1.3.76...v1.3.77) (2025-10-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.76](https://github.com/cube-js/cube/compare/v1.3.75...v1.3.76) (2025-10-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.75](https://github.com/cube-js/cube/compare/v1.3.74...v1.3.75) (2025-09-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.74](https://github.com/cube-js/cube/compare/v1.3.73...v1.3.74) (2025-09-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.73](https://github.com/cube-js/cube/compare/v1.3.72...v1.3.73) (2025-09-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.72](https://github.com/cube-js/cube/compare/v1.3.71...v1.3.72) (2025-09-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.71](https://github.com/cube-js/cube/compare/v1.3.70...v1.3.71) (2025-09-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.70](https://github.com/cube-js/cube/compare/v1.3.69...v1.3.70) (2025-09-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.69](https://github.com/cube-js/cube/compare/v1.3.68...v1.3.69) (2025-09-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.68](https://github.com/cube-js/cube/compare/v1.3.67...v1.3.68) (2025-09-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.67](https://github.com/cube-js/cube/compare/v1.3.66...v1.3.67) (2025-09-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.66](https://github.com/cube-js/cube/compare/v1.3.65...v1.3.66) (2025-09-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.65](https://github.com/cube-js/cube/compare/v1.3.64...v1.3.65) (2025-09-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.64](https://github.com/cube-js/cube/compare/v1.3.63...v1.3.64) (2025-09-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.63](https://github.com/cube-js/cube/compare/v1.3.62...v1.3.63) (2025-09-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.62](https://github.com/cube-js/cube/compare/v1.3.61...v1.3.62) (2025-08-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.61](https://github.com/cube-js/cube/compare/v1.3.60...v1.3.61) (2025-08-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.60](https://github.com/cube-js/cube/compare/v1.3.59...v1.3.60) (2025-08-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.59](https://github.com/cube-js/cube/compare/v1.3.58...v1.3.59) (2025-08-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.58](https://github.com/cube-js/cube/compare/v1.3.57...v1.3.58) (2025-08-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.57](https://github.com/cube-js/cube/compare/v1.3.56...v1.3.57) (2025-08-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.56](https://github.com/cube-js/cube/compare/v1.3.55...v1.3.56) (2025-08-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.55](https://github.com/cube-js/cube/compare/v1.3.54...v1.3.55) (2025-08-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.54](https://github.com/cube-js/cube/compare/v1.3.53...v1.3.54) (2025-08-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.53](https://github.com/cube-js/cube/compare/v1.3.52...v1.3.53) (2025-08-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.52](https://github.com/cube-js/cube/compare/v1.3.51...v1.3.52) (2025-08-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.51](https://github.com/cube-js/cube/compare/v1.3.50...v1.3.51) (2025-08-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.50](https://github.com/cube-js/cube/compare/v1.3.49...v1.3.50) (2025-08-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.49](https://github.com/cube-js/cube/compare/v1.3.48...v1.3.49) (2025-08-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.48](https://github.com/cube-js/cube/compare/v1.3.47...v1.3.48) (2025-08-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.47](https://github.com/cube-js/cube/compare/v1.3.46...v1.3.47) (2025-08-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.46](https://github.com/cube-js/cube/compare/v1.3.45...v1.3.46) (2025-07-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.45](https://github.com/cube-js/cube/compare/v1.3.44...v1.3.45) (2025-07-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.44](https://github.com/cube-js/cube/compare/v1.3.43...v1.3.44) (2025-07-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.43](https://github.com/cube-js/cube/compare/v1.3.42...v1.3.43) (2025-07-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.42](https://github.com/cube-js/cube/compare/v1.3.41...v1.3.42) (2025-07-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.41](https://github.com/cube-js/cube/compare/v1.3.40...v1.3.41) (2025-07-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.40](https://github.com/cube-js/cube/compare/v1.3.39...v1.3.40) (2025-07-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.39](https://github.com/cube-js/cube/compare/v1.3.38...v1.3.39) (2025-07-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.38](https://github.com/cube-js/cube/compare/v1.3.37...v1.3.38) (2025-07-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.37](https://github.com/cube-js/cube/compare/v1.3.36...v1.3.37) (2025-07-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.36](https://github.com/cube-js/cube/compare/v1.3.35...v1.3.36) (2025-07-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.35](https://github.com/cube-js/cube/compare/v1.3.34...v1.3.35) (2025-07-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.34](https://github.com/cube-js/cube/compare/v1.3.33...v1.3.34) (2025-07-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.33](https://github.com/cube-js/cube/compare/v1.3.32...v1.3.33) (2025-07-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.32](https://github.com/cube-js/cube/compare/v1.3.31...v1.3.32) (2025-07-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.31](https://github.com/cube-js/cube/compare/v1.3.30...v1.3.31) (2025-07-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.30](https://github.com/cube-js/cube/compare/v1.3.29...v1.3.30) (2025-07-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.29](https://github.com/cube-js/cube/compare/v1.3.28...v1.3.29) (2025-07-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.28](https://github.com/cube-js/cube/compare/v1.3.27...v1.3.28) (2025-06-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.27](https://github.com/cube-js/cube/compare/v1.3.26...v1.3.27) (2025-06-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.26](https://github.com/cube-js/cube/compare/v1.3.25...v1.3.26) (2025-06-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.25](https://github.com/cube-js/cube/compare/v1.3.24...v1.3.25) (2025-06-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.24](https://github.com/cube-js/cube/compare/v1.3.23...v1.3.24) (2025-06-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.23](https://github.com/cube-js/cube/compare/v1.3.22...v1.3.23) (2025-06-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.22](https://github.com/cube-js/cube/compare/v1.3.21...v1.3.22) (2025-06-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.21](https://github.com/cube-js/cube/compare/v1.3.20...v1.3.21) (2025-06-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.20](https://github.com/cube-js/cube/compare/v1.3.19...v1.3.20) (2025-06-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.19](https://github.com/cube-js/cube/compare/v1.3.18...v1.3.19) (2025-06-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.18](https://github.com/cube-js/cube/compare/v1.3.17...v1.3.18) (2025-05-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.17](https://github.com/cube-js/cube/compare/v1.3.16...v1.3.17) (2025-05-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.16](https://github.com/cube-js/cube/compare/v1.3.15...v1.3.16) (2025-05-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.15](https://github.com/cube-js/cube/compare/v1.3.14...v1.3.15) (2025-05-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.14](https://github.com/cube-js/cube/compare/v1.3.13...v1.3.14) (2025-05-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.13](https://github.com/cube-js/cube/compare/v1.3.12...v1.3.13) (2025-05-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.12](https://github.com/cube-js/cube/compare/v1.3.11...v1.3.12) (2025-05-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.11](https://github.com/cube-js/cube/compare/v1.3.10...v1.3.11) (2025-05-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.10](https://github.com/cube-js/cube/compare/v1.3.9...v1.3.10) (2025-05-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.9](https://github.com/cube-js/cube/compare/v1.3.8...v1.3.9) (2025-04-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.8](https://github.com/cube-js/cube/compare/v1.3.7...v1.3.8) (2025-04-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.7](https://github.com/cube-js/cube/compare/v1.3.6...v1.3.7) (2025-04-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.6](https://github.com/cube-js/cube/compare/v1.3.5...v1.3.6) (2025-04-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.5](https://github.com/cube-js/cube/compare/v1.3.4...v1.3.5) (2025-04-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.4](https://github.com/cube-js/cube/compare/v1.3.3...v1.3.4) (2025-04-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.3](https://github.com/cube-js/cube/compare/v1.3.2...v1.3.3) (2025-04-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.2](https://github.com/cube-js/cube/compare/v1.3.1...v1.3.2) (2025-04-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.3.1](https://github.com/cube-js/cube/compare/v1.3.0...v1.3.1) (2025-04-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [1.3.0](https://github.com/cube-js/cube/compare/v1.2.33...v1.3.0) (2025-04-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.33](https://github.com/cube-js/cube/compare/v1.2.32...v1.2.33) (2025-04-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.32](https://github.com/cube-js/cube/compare/v1.2.31...v1.2.32) (2025-04-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.31](https://github.com/cube-js/cube/compare/v1.2.30...v1.2.31) (2025-04-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.30](https://github.com/cube-js/cube/compare/v1.2.29...v1.2.30) (2025-04-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.29](https://github.com/cube-js/cube/compare/v1.2.28...v1.2.29) (2025-04-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.28](https://github.com/cube-js/cube/compare/v1.2.27...v1.2.28) (2025-04-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.27](https://github.com/cube-js/cube/compare/v1.2.26...v1.2.27) (2025-03-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.26](https://github.com/cube-js/cube/compare/v1.2.25...v1.2.26) (2025-03-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.25](https://github.com/cube-js/cube/compare/v1.2.24...v1.2.25) (2025-03-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.24](https://github.com/cube-js/cube/compare/v1.2.23...v1.2.24) (2025-03-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.23](https://github.com/cube-js/cube/compare/v1.2.22...v1.2.23) (2025-03-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.22](https://github.com/cube-js/cube/compare/v1.2.21...v1.2.22) (2025-03-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.21](https://github.com/cube-js/cube/compare/v1.2.20...v1.2.21) (2025-03-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.20](https://github.com/cube-js/cube/compare/v1.2.19...v1.2.20) (2025-03-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.19](https://github.com/cube-js/cube/compare/v1.2.18...v1.2.19) (2025-03-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.18](https://github.com/cube-js/cube/compare/v1.2.17...v1.2.18) (2025-03-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.17](https://github.com/cube-js/cube/compare/v1.2.16...v1.2.17) (2025-03-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.16](https://github.com/cube-js/cube/compare/v1.2.15...v1.2.16) (2025-03-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.15](https://github.com/cube-js/cube/compare/v1.2.14...v1.2.15) (2025-03-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.14](https://github.com/cube-js/cube/compare/v1.2.13...v1.2.14) (2025-02-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.13](https://github.com/cube-js/cube/compare/v1.2.12...v1.2.13) (2025-02-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.12](https://github.com/cube-js/cube/compare/v1.2.11...v1.2.12) (2025-02-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.11](https://github.com/cube-js/cube/compare/v1.2.10...v1.2.11) (2025-02-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.10](https://github.com/cube-js/cube/compare/v1.2.9...v1.2.10) (2025-02-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.9](https://github.com/cube-js/cube/compare/v1.2.8...v1.2.9) (2025-02-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.8](https://github.com/cube-js/cube/compare/v1.2.7...v1.2.8) (2025-02-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.7](https://github.com/cube-js/cube/compare/v1.2.6...v1.2.7) (2025-02-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.6](https://github.com/cube-js/cube/compare/v1.2.5...v1.2.6) (2025-02-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.5](https://github.com/cube-js/cube/compare/v1.2.4...v1.2.5) (2025-02-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.4](https://github.com/cube-js/cube/compare/v1.2.3...v1.2.4) (2025-02-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.3](https://github.com/cube-js/cube/compare/v1.2.2...v1.2.3) (2025-02-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.2](https://github.com/cube-js/cube/compare/v1.2.1...v1.2.2) (2025-02-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.2.1](https://github.com/cube-js/cube/compare/v1.2.0...v1.2.1) (2025-02-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [1.2.0](https://github.com/cube-js/cube/compare/v1.1.18...v1.2.0) (2025-02-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.17](https://github.com/cube-js/cube/compare/v1.1.16...v1.1.17) (2025-01-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.16](https://github.com/cube-js/cube/compare/v1.1.15...v1.1.16) (2025-01-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.12](https://github.com/cube-js/cube/compare/v1.1.11...v1.1.12) (2025-01-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.10](https://github.com/cube-js/cube/compare/v1.1.9...v1.1.10) (2024-12-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.8](https://github.com/cube-js/cube/compare/v1.1.7...v1.1.8) (2024-12-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.7](https://github.com/cube-js/cube/compare/v1.1.6...v1.1.7) (2024-11-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.4](https://github.com/cube-js/cube/compare/v1.1.3...v1.1.4) (2024-11-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.3](https://github.com/cube-js/cube/compare/v1.1.2...v1.1.3) (2024-11-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.2](https://github.com/cube-js/cube/compare/v1.1.1...v1.1.2) (2024-11-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.1.1](https://github.com/cube-js/cube/compare/v1.1.0...v1.1.1) (2024-10-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.0.3](https://github.com/cube-js/cube/compare/v1.0.2...v1.0.3) (2024-10-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [1.0.2](https://github.com/cube-js/cube/compare/v1.0.1...v1.0.2) (2024-10-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [1.0.0](https://github.com/cube-js/cube/compare/v0.36.11...v1.0.0) (2024-10-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.36.11](https://github.com/cube-js/cube/compare/v0.36.10...v0.36.11) (2024-10-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.36.8](https://github.com/cube-js/cube/compare/v0.36.7...v0.36.8) (2024-10-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.36.5](https://github.com/cube-js/cube/compare/v0.36.4...v0.36.5) (2024-10-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.36.0](https://github.com/cube-js/cube/compare/v0.35.81...v0.36.0) (2024-09-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.81](https://github.com/cube-js/cube/compare/v0.35.80...v0.35.81) (2024-09-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.67](https://github.com/cube-js/cube/compare/v0.35.66...v0.35.67) (2024-08-07) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.64](https://github.com/cube-js/cube/compare/v0.35.63...v0.35.64) (2024-07-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.63](https://github.com/cube-js/cube/compare/v0.35.62...v0.35.63) (2024-07-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.62](https://github.com/cube-js/cube/compare/v0.35.61...v0.35.62) (2024-07-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.59](https://github.com/cube-js/cube/compare/v0.35.58...v0.35.59) (2024-07-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.48](https://github.com/cube-js/cube/compare/v0.35.47...v0.35.48) (2024-06-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.43](https://github.com/cube-js/cube/compare/v0.35.42...v0.35.43) (2024-05-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.33](https://github.com/cube-js/cube/compare/v0.35.32...v0.35.33) (2024-05-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.26](https://github.com/cube-js/cube/compare/v0.35.25...v0.35.26) (2024-05-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.23](https://github.com/cube-js/cube/compare/v0.35.22...v0.35.23) (2024-04-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.35.2](https://github.com/cube-js/cube/compare/v0.35.1...v0.35.2) (2024-03-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.35.0](https://github.com/cube-js/cube/compare/v0.34.62...v0.35.0) (2024-03-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.62](https://github.com/cube-js/cube/compare/v0.34.61...v0.34.62) (2024-03-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.61](https://github.com/cube-js/cube/compare/v0.34.60...v0.34.61) (2024-03-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.60](https://github.com/cube-js/cube/compare/v0.34.59...v0.34.60) (2024-03-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.58](https://github.com/cube-js/cube/compare/v0.34.57...v0.34.58) (2024-02-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.57](https://github.com/cube-js/cube/compare/v0.34.56...v0.34.57) (2024-02-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.55](https://github.com/cube-js/cube/compare/v0.34.54...v0.34.55) (2024-02-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.54](https://github.com/cube-js/cube/compare/v0.34.53...v0.34.54) (2024-02-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.47](https://github.com/cube-js/cube/compare/v0.34.46...v0.34.47) (2024-01-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.44](https://github.com/cube-js/cube/compare/v0.34.43...v0.34.44) (2024-01-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.41](https://github.com/cube-js/cube/compare/v0.34.40...v0.34.41) (2024-01-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.33](https://github.com/cube-js/cube/compare/v0.34.32...v0.34.33) (2023-12-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.32](https://github.com/cube-js/cube/compare/v0.34.31...v0.34.32) (2023-12-07) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.31](https://github.com/cube-js/cube/compare/v0.34.30...v0.34.31) (2023-12-07) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.26](https://github.com/cube-js/cube/compare/v0.34.25...v0.34.26) (2023-11-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.25](https://github.com/cube-js/cube/compare/v0.34.24...v0.34.25) (2023-11-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.20](https://github.com/cube-js/cube/compare/v0.34.19...v0.34.20) (2023-11-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.14](https://github.com/cube-js/cube/compare/v0.34.13...v0.34.14) (2023-11-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.12](https://github.com/cube-js/cube/compare/v0.34.11...v0.34.12) (2023-10-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.11](https://github.com/cube-js/cube/compare/v0.34.10...v0.34.11) (2023-10-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.34.1](https://github.com/cube-js/cube/compare/v0.34.0...v0.34.1) (2023-10-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.34.0](https://github.com/cube-js/cube/compare/v0.33.65...v0.34.0) (2023-10-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.58](https://github.com/cube-js/cube/compare/v0.33.57...v0.33.58) (2023-09-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.57](https://github.com/cube-js/cube/compare/v0.33.56...v0.33.57) (2023-09-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.43](https://github.com/cube-js/cube/compare/v0.33.42...v0.33.43) (2023-08-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.41](https://github.com/cube-js/cube/compare/v0.33.40...v0.33.41) (2023-07-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.39](https://github.com/cube-js/cube/compare/v0.33.38...v0.33.39) (2023-07-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.37](https://github.com/cube-js/cube/compare/v0.33.36...v0.33.37) (2023-07-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.34](https://github.com/cube-js/cube/compare/v0.33.33...v0.33.34) (2023-07-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.29](https://github.com/cube-js/cube/compare/v0.33.28...v0.33.29) (2023-06-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.28](https://github.com/cube-js/cube/compare/v0.33.27...v0.33.28) (2023-06-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.26](https://github.com/cube-js/cube/compare/v0.33.25...v0.33.26) (2023-06-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.24](https://github.com/cube-js/cube/compare/v0.33.23...v0.33.24) (2023-06-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.21](https://github.com/cube-js/cube/compare/v0.33.20...v0.33.21) (2023-05-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.20](https://github.com/cube-js/cube/compare/v0.33.19...v0.33.20) (2023-05-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.19](https://github.com/cube-js/cube/compare/v0.33.18...v0.33.19) (2023-05-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.18](https://github.com/cube-js/cube/compare/v0.33.17...v0.33.18) (2023-05-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.11](https://github.com/cube-js/cube/compare/v0.33.10...v0.33.11) (2023-05-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.8](https://github.com/cube-js/cube/compare/v0.33.7...v0.33.8) (2023-05-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.7](https://github.com/cube-js/cube/compare/v0.33.6...v0.33.7) (2023-05-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.33.2](https://github.com/cube-js/cube/compare/v0.33.1...v0.33.2) (2023-05-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.33.0](https://github.com/cube-js/cube/compare/v0.32.31...v0.33.0) (2023-05-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.30](https://github.com/cube-js/cube/compare/v0.32.29...v0.32.30) (2023-04-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.29](https://github.com/cube-js/cube/compare/v0.32.28...v0.32.29) (2023-04-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.28](https://github.com/cube-js/cube/compare/v0.32.27...v0.32.28) (2023-04-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.26](https://github.com/cube-js/cube/compare/v0.32.25...v0.32.26) (2023-04-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.25](https://github.com/cube-js/cube/compare/v0.32.24...v0.32.25) (2023-04-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.23](https://github.com/cube-js/cube/compare/v0.32.22...v0.32.23) (2023-04-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.22](https://github.com/cube-js/cube/compare/v0.32.21...v0.32.22) (2023-04-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.17](https://github.com/cube-js/cube/compare/v0.32.16...v0.32.17) (2023-03-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.16](https://github.com/cube-js/cube/compare/v0.32.15...v0.32.16) (2023-03-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.15](https://github.com/cube-js/cube/compare/v0.32.14...v0.32.15) (2023-03-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.14](https://github.com/cube-js/cube/compare/v0.32.13...v0.32.14) (2023-03-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.12](https://github.com/cube-js/cube/compare/v0.32.11...v0.32.12) (2023-03-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.32.2](https://github.com/cube-js/cube.js/compare/v0.32.1...v0.32.2) (2023-03-07) - -### Features - -- connection validation and logging ([#6233](https://github.com/cube-js/cube.js/issues/6233)) ([6dc48f8](https://github.com/cube-js/cube.js/commit/6dc48f8dc8045234dfa9fe8922534c5204e6e569)) - -# [0.32.0](https://github.com/cube-js/cube.js/compare/v0.31.69...v0.32.0) (2023-03-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.67](https://github.com/cube-js/cube.js/compare/v0.31.66...v0.31.67) (2023-02-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.66](https://github.com/cube-js/cube.js/compare/v0.31.65...v0.31.66) (2023-02-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.65](https://github.com/cube-js/cube.js/compare/v0.31.64...v0.31.65) (2023-02-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.63](https://github.com/cube-js/cube.js/compare/v0.31.62...v0.31.63) (2023-02-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.62](https://github.com/cube-js/cube.js/compare/v0.31.61...v0.31.62) (2023-02-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.60](https://github.com/cube-js/cube.js/compare/v0.31.59...v0.31.60) (2023-02-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.58](https://github.com/cube-js/cube.js/compare/v0.31.57...v0.31.58) (2023-02-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.57](https://github.com/cube-js/cube.js/compare/v0.31.56...v0.31.57) (2023-02-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.56](https://github.com/cube-js/cube.js/compare/v0.31.55...v0.31.56) (2023-01-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.55](https://github.com/cube-js/cube.js/compare/v0.31.54...v0.31.55) (2023-01-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.48](https://github.com/cube-js/cube.js/compare/v0.31.47...v0.31.48) (2023-01-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.46](https://github.com/cube-js/cube.js/compare/v0.31.45...v0.31.46) (2023-01-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.42](https://github.com/cube-js/cube.js/compare/v0.31.41...v0.31.42) (2023-01-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.41](https://github.com/cube-js/cube.js/compare/v0.31.40...v0.31.41) (2023-01-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.40](https://github.com/cube-js/cube.js/compare/v0.31.39...v0.31.40) (2023-01-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.38](https://github.com/cube-js/cube.js/compare/v0.31.37...v0.31.38) (2023-01-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.33](https://github.com/cube-js/cube.js/compare/v0.31.32...v0.31.33) (2023-01-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.32](https://github.com/cube-js/cube.js/compare/v0.31.31...v0.31.32) (2022-12-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.31](https://github.com/cube-js/cube.js/compare/v0.31.30...v0.31.31) (2022-12-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.30](https://github.com/cube-js/cube.js/compare/v0.31.29...v0.31.30) (2022-12-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.29](https://github.com/cube-js/cube.js/compare/v0.31.28...v0.31.29) (2022-12-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.26](https://github.com/cube-js/cube.js/compare/v0.31.25...v0.31.26) (2022-12-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.23](https://github.com/cube-js/cube.js/compare/v0.31.22...v0.31.23) (2022-12-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.19](https://github.com/cube-js/cube.js/compare/v0.31.18...v0.31.19) (2022-11-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.16](https://github.com/cube-js/cube.js/compare/v0.31.15...v0.31.16) (2022-11-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.15](https://github.com/cube-js/cube.js/compare/v0.31.14...v0.31.15) (2022-11-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.13](https://github.com/cube-js/cube.js/compare/v0.31.12...v0.31.13) (2022-11-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.11](https://github.com/cube-js/cube.js/compare/v0.31.10...v0.31.11) (2022-11-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.31.3](https://github.com/cube-js/cube.js/compare/v0.31.2...v0.31.3) (2022-10-08) - -### Bug Fixes - -- drivers imports alignment ([#5448](https://github.com/cube-js/cube.js/issues/5448)) ([ab12426](https://github.com/cube-js/cube.js/commit/ab1242650ba0368b855176b9c6ca2d73073acf0e)) - -## [0.31.2](https://github.com/cube-js/cube.js/compare/v0.31.1...v0.31.2) (2022-10-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.31.0](https://github.com/cube-js/cube.js/compare/v0.30.75...v0.31.0) (2022-10-03) - -### Features - -- multiple data source ([#5326](https://github.com/cube-js/cube.js/issues/5326)) ([334af8c](https://github.com/cube-js/cube.js/commit/334af8c56cd02ae551844e9d1e9ab5e107fb1555)) - -## [0.30.73](https://github.com/cube-js/cube.js/compare/v0.30.72...v0.30.73) (2022-09-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.72](https://github.com/cube-js/cube.js/compare/v0.30.71...v0.30.72) (2022-09-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.70](https://github.com/cube-js/cube.js/compare/v0.30.69...v0.30.70) (2022-09-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.69](https://github.com/cube-js/cube.js/compare/v0.30.68...v0.30.69) (2022-09-13) - -### Features - -- **base-driver:** Split BaseDriver to @cubejs-backend/base-driver ([#5283](https://github.com/cube-js/cube.js/issues/5283)) ([ca7f9d2](https://github.com/cube-js/cube.js/commit/ca7f9d280c3518e012683c23b82175ec1f96d2a8)) - -## [0.30.66](https://github.com/cube-js/cube.js/compare/v0.30.65...v0.30.66) (2022-09-08) - -### Bug Fixes - -- driver's constructor parameters initializers ([#5258](https://github.com/cube-js/cube.js/issues/5258)) ([08324a5](https://github.com/cube-js/cube.js/commit/08324a50c29d8f1dad138bfdc1396038cd7ae462)) - -## [0.30.63](https://github.com/cube-js/cube.js/compare/v0.30.62...v0.30.63) (2022-09-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.61](https://github.com/cube-js/cube.js/compare/v0.30.60...v0.30.61) (2022-09-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.57](https://github.com/cube-js/cube.js/compare/v0.30.56...v0.30.57) (2022-08-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.53](https://github.com/cube-js/cube.js/compare/v0.30.52...v0.30.53) (2022-08-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.51](https://github.com/cube-js/cube.js/compare/v0.30.50...v0.30.51) (2022-08-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.50](https://github.com/cube-js/cube.js/compare/v0.30.49...v0.30.50) (2022-08-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.47](https://github.com/cube-js/cube.js/compare/v0.30.46...v0.30.47) (2022-08-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.46](https://github.com/cube-js/cube.js/compare/v0.30.45...v0.30.46) (2022-08-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.45](https://github.com/cube-js/cube.js/compare/v0.30.44...v0.30.45) (2022-08-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.43](https://github.com/cube-js/cube.js/compare/v0.30.42...v0.30.43) (2022-07-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.39](https://github.com/cube-js/cube.js/compare/v0.30.38...v0.30.39) (2022-07-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.34](https://github.com/cube-js/cube.js/compare/v0.30.33...v0.30.34) (2022-07-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.30](https://github.com/cube-js/cube.js/compare/v0.30.29...v0.30.30) (2022-07-05) - -### Bug Fixes - -- drivers default concurrency values ([4b7296f](https://github.com/cube-js/cube.js/commit/4b7296f266b49e3d38dce1ff82ce4edd703121bc)) - -### Features - -- centralized concurrency setting ([#4735](https://github.com/cube-js/cube.js/issues/4735)) ([1c897a1](https://github.com/cube-js/cube.js/commit/1c897a13c62049e23d26009351622b2a93c0a745)) - -## [0.30.25](https://github.com/cube-js/cube.js/compare/v0.30.24...v0.30.25) (2022-06-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.20](https://github.com/cube-js/cube.js/compare/v0.30.19...v0.30.20) (2022-06-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.7](https://github.com/cube-js/cube.js/compare/v0.30.6...v0.30.7) (2022-05-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.6](https://github.com/cube-js/cube.js/compare/v0.30.5...v0.30.6) (2022-05-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.4](https://github.com/cube-js/cube.js/compare/v0.30.3...v0.30.4) (2022-05-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.30.1](https://github.com/cube-js/cube.js/compare/v0.30.0...v0.30.1) (2022-05-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.30.0](https://github.com/cube-js/cube.js/compare/v0.29.57...v0.30.0) (2022-05-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.51](https://github.com/cube-js/cube.js/compare/v0.29.50...v0.29.51) (2022-04-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.48](https://github.com/cube-js/cube.js/compare/v0.29.47...v0.29.48) (2022-04-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.37](https://github.com/cube-js/cube.js/compare/v0.29.36...v0.29.37) (2022-03-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.35](https://github.com/cube-js/cube.js/compare/v0.29.34...v0.29.35) (2022-03-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.33](https://github.com/cube-js/cube.js/compare/v0.29.32...v0.29.33) (2022-03-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.31](https://github.com/cube-js/cube.js/compare/v0.29.30...v0.29.31) (2022-03-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.29](https://github.com/cube-js/cube.js/compare/v0.29.28...v0.29.29) (2022-03-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.28](https://github.com/cube-js/cube.js/compare/v0.29.27...v0.29.28) (2022-02-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.25](https://github.com/cube-js/cube.js/compare/v0.29.24...v0.29.25) (2022-02-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.24](https://github.com/cube-js/cube.js/compare/v0.29.23...v0.29.24) (2022-02-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.23](https://github.com/cube-js/cube.js/compare/v0.29.22...v0.29.23) (2022-01-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.21](https://github.com/cube-js/cube.js/compare/v0.29.20...v0.29.21) (2022-01-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.20](https://github.com/cube-js/cube.js/compare/v0.29.19...v0.29.20) (2022-01-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.18](https://github.com/cube-js/cube.js/compare/v0.29.17...v0.29.18) (2022-01-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.17](https://github.com/cube-js/cube.js/compare/v0.29.16...v0.29.17) (2022-01-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.15](https://github.com/cube-js/cube.js/compare/v0.29.14...v0.29.15) (2021-12-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.12](https://github.com/cube-js/cube.js/compare/v0.29.11...v0.29.12) (2021-12-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.7](https://github.com/cube-js/cube.js/compare/v0.29.6...v0.29.7) (2021-12-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.29.6](https://github.com/cube-js/cube.js/compare/v0.29.5...v0.29.6) (2021-12-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.29.0](https://github.com/cube-js/cube.js/compare/v0.28.67...v0.29.0) (2021-12-14) - -### Reverts - -- Revert "BREAKING CHANGE: 0.29 (#3809)" (#3811) ([db005ed](https://github.com/cube-js/cube.js/commit/db005edc04d48e8251250ab9d0e19f496cf3b52b)), closes [#3809](https://github.com/cube-js/cube.js/issues/3809) [#3811](https://github.com/cube-js/cube.js/issues/3811) - -- BREAKING CHANGE: 0.29 (#3809) ([6f1418b](https://github.com/cube-js/cube.js/commit/6f1418b9963774844f341682e594601a56bb0084)), closes [#3809](https://github.com/cube-js/cube.js/issues/3809) - -### BREAKING CHANGES - -- Drop support for Node.js 10 (12.x is a minimal version) -- Upgrade Node.js to 14 for Docker images -- Drop support for Node.js 15 - -## [0.28.64](https://github.com/cube-js/cube.js/compare/v0.28.63...v0.28.64) (2021-12-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.63](https://github.com/cube-js/cube.js/compare/v0.28.62...v0.28.63) (2021-12-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.61](https://github.com/cube-js/cube.js/compare/v0.28.60...v0.28.61) (2021-11-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.60](https://github.com/cube-js/cube.js/compare/v0.28.59...v0.28.60) (2021-11-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.59](https://github.com/cube-js/cube.js/compare/v0.28.58...v0.28.59) (2021-11-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.58](https://github.com/cube-js/cube.js/compare/v0.28.57...v0.28.58) (2021-11-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.56](https://github.com/cube-js/cube.js/compare/v0.28.55...v0.28.56) (2021-11-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.55](https://github.com/cube-js/cube.js/compare/v0.28.54...v0.28.55) (2021-11-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.52](https://github.com/cube-js/cube.js/compare/v0.28.51...v0.28.52) (2021-11-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.50](https://github.com/cube-js/cube.js/compare/v0.28.49...v0.28.50) (2021-10-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.47](https://github.com/cube-js/cube.js/compare/v0.28.46...v0.28.47) (2021-10-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.42](https://github.com/cube-js/cube.js/compare/v0.28.41...v0.28.42) (2021-10-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.38](https://github.com/cube-js/cube.js/compare/v0.28.37...v0.28.38) (2021-09-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.37](https://github.com/cube-js/cube.js/compare/v0.28.36...v0.28.37) (2021-09-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.34](https://github.com/cube-js/cube.js/compare/v0.28.33...v0.28.34) (2021-09-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.33](https://github.com/cube-js/cube.js/compare/v0.28.32...v0.28.33) (2021-09-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.32](https://github.com/cube-js/cube.js/compare/v0.28.31...v0.28.32) (2021-09-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.29](https://github.com/cube-js/cube.js/compare/v0.28.28...v0.28.29) (2021-08-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.27](https://github.com/cube-js/cube.js/compare/v0.28.26...v0.28.27) (2021-08-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.24](https://github.com/cube-js/cube.js/compare/v0.28.23...v0.28.24) (2021-08-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.22](https://github.com/cube-js/cube.js/compare/v0.28.21...v0.28.22) (2021-08-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.19](https://github.com/cube-js/cube.js/compare/v0.28.18...v0.28.19) (2021-08-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.17](https://github.com/cube-js/cube.js/compare/v0.28.16...v0.28.17) (2021-08-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.14](https://github.com/cube-js/cube.js/compare/v0.28.13...v0.28.14) (2021-08-05) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.13](https://github.com/cube-js/cube.js/compare/v0.28.12...v0.28.13) (2021-08-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.11](https://github.com/cube-js/cube.js/compare/v0.28.10...v0.28.11) (2021-07-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.10](https://github.com/cube-js/cube.js/compare/v0.28.9...v0.28.10) (2021-07-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.9](https://github.com/cube-js/cube.js/compare/v0.28.8...v0.28.9) (2021-07-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.8](https://github.com/cube-js/cube.js/compare/v0.28.7...v0.28.8) (2021-07-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.7](https://github.com/cube-js/cube.js/compare/v0.28.6...v0.28.7) (2021-07-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.6](https://github.com/cube-js/cube.js/compare/v0.28.5...v0.28.6) (2021-07-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.3](https://github.com/cube-js/cube.js/compare/v0.28.2...v0.28.3) (2021-07-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.2](https://github.com/cube-js/cube.js/compare/v0.28.1...v0.28.2) (2021-07-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.28.1](https://github.com/cube-js/cube.js/compare/v0.28.0...v0.28.1) (2021-07-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.28.0](https://github.com/cube-js/cube.js/compare/v0.27.53...v0.28.0) (2021-07-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.53](https://github.com/cube-js/cube.js/compare/v0.27.52...v0.27.53) (2021-07-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.51](https://github.com/cube-js/cube.js/compare/v0.27.50...v0.27.51) (2021-07-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.49](https://github.com/cube-js/cube.js/compare/v0.27.48...v0.27.49) (2021-07-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.47](https://github.com/cube-js/cube.js/compare/v0.27.46...v0.27.47) (2021-07-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.46](https://github.com/cube-js/cube.js/compare/v0.27.45...v0.27.46) (2021-07-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.45](https://github.com/cube-js/cube.js/compare/v0.27.44...v0.27.45) (2021-06-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.44](https://github.com/cube-js/cube.js/compare/v0.27.43...v0.27.44) (2021-06-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.41](https://github.com/cube-js/cube.js/compare/v0.27.40...v0.27.41) (2021-06-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.39](https://github.com/cube-js/cube.js/compare/v0.27.38...v0.27.39) (2021-06-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.38](https://github.com/cube-js/cube.js/compare/v0.27.37...v0.27.38) (2021-06-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.37](https://github.com/cube-js/cube.js/compare/v0.27.36...v0.27.37) (2021-06-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.36](https://github.com/cube-js/cube.js/compare/v0.27.35...v0.27.36) (2021-06-21) - -### Bug Fixes - -- **elasticsearch-driver:** Make readOnly ([15ec569](https://github.com/cube-js/cube.js/commit/15ec5690fde529bf8294111150d44916139168fe)) - -## [0.27.35](https://github.com/cube-js/cube.js/compare/v0.27.34...v0.27.35) (2021-06-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.34](https://github.com/cube-js/cube.js/compare/v0.27.33...v0.27.34) (2021-06-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.33](https://github.com/cube-js/cube.js/compare/v0.27.32...v0.27.33) (2021-06-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.32](https://github.com/cube-js/cube.js/compare/v0.27.31...v0.27.32) (2021-06-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.31](https://github.com/cube-js/cube.js/compare/v0.27.30...v0.27.31) (2021-06-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.30](https://github.com/cube-js/cube.js/compare/v0.27.29...v0.27.30) (2021-06-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.29](https://github.com/cube-js/cube.js/compare/v0.27.27...v0.27.29) (2021-06-02) - -### Bug Fixes - -- **elasticsearch-driver:** Lock @elastic/elasticsearch to 7.12 for Node.js 10 support ([cedf108](https://github.com/cube-js/cube.js/commit/cedf1089ea6262a4e3e3fed18c3714fb8258fa93)) - -## [0.27.28](https://github.com/cube-js/cube.js/compare/v0.27.27...v0.27.28) (2021-06-02) - -### Bug Fixes - -- **elasticsearch-driver:** Lock @elastic/elasticsearch to 7.12 for Node.js 10 support ([cedf108](https://github.com/cube-js/cube.js/commit/cedf1089ea6262a4e3e3fed18c3714fb8258fa93)) - -## [0.27.25](https://github.com/cube-js/cube.js/compare/v0.27.24...v0.27.25) (2021-06-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.22](https://github.com/cube-js/cube.js/compare/v0.27.21...v0.27.22) (2021-05-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.17](https://github.com/cube-js/cube.js/compare/v0.27.16...v0.27.17) (2021-05-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.16](https://github.com/cube-js/cube.js/compare/v0.27.15...v0.27.16) (2021-05-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.15](https://github.com/cube-js/cube.js/compare/v0.27.14...v0.27.15) (2021-05-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.13](https://github.com/cube-js/cube.js/compare/v0.27.12...v0.27.13) (2021-05-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.10](https://github.com/cube-js/cube.js/compare/v0.27.9...v0.27.10) (2021-05-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.5](https://github.com/cube-js/cube.js/compare/v0.27.4...v0.27.5) (2021-05-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.4](https://github.com/cube-js/cube.js/compare/v0.27.3...v0.27.4) (2021-04-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.2](https://github.com/cube-js/cube.js/compare/v0.27.1...v0.27.2) (2021-04-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.27.1](https://github.com/cube-js/cube.js/compare/v0.27.0...v0.27.1) (2021-04-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.27.0](https://github.com/cube-js/cube.js/compare/v0.26.104...v0.27.0) (2021-04-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.103](https://github.com/cube-js/cube.js/compare/v0.26.102...v0.26.103) (2021-04-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.101](https://github.com/cube-js/cube.js/compare/v0.26.100...v0.26.101) (2021-04-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.99](https://github.com/cube-js/cube.js/compare/v0.26.98...v0.26.99) (2021-04-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.95](https://github.com/cube-js/cube.js/compare/v0.26.94...v0.26.95) (2021-04-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.90](https://github.com/cube-js/cube.js/compare/v0.26.89...v0.26.90) (2021-04-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.88](https://github.com/cube-js/cube.js/compare/v0.26.87...v0.26.88) (2021-04-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.87](https://github.com/cube-js/cube.js/compare/v0.26.86...v0.26.87) (2021-04-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.81](https://github.com/cube-js/cube.js/compare/v0.26.80...v0.26.81) (2021-04-07) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.79](https://github.com/cube-js/cube.js/compare/v0.26.78...v0.26.79) (2021-04-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.77](https://github.com/cube-js/cube.js/compare/v0.26.76...v0.26.77) (2021-04-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.76](https://github.com/cube-js/cube.js/compare/v0.26.75...v0.26.76) (2021-04-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.74](https://github.com/cube-js/cube.js/compare/v0.26.73...v0.26.74) (2021-04-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.69](https://github.com/cube-js/cube.js/compare/v0.26.68...v0.26.69) (2021-03-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.65](https://github.com/cube-js/cube.js/compare/v0.26.64...v0.26.65) (2021-03-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.55](https://github.com/cube-js/cube.js/compare/v0.26.54...v0.26.55) (2021-03-12) - -### Features - -- **elasticsearch-driver:** Ability to use USERNAME, PASSWORD and SSL\_\* env variables ([13c90cd](https://github.com/cube-js/cube.js/commit/13c90cd097b24c6e823dc4de76ae497ebfecc06b)) -- **elasticsearch-driver:** Implement release ([2b88ed7](https://github.com/cube-js/cube.js/commit/2b88ed7c4105f0506555bd7cec63f2634f3149f4)) - -## [0.26.54](https://github.com/cube-js/cube.js/compare/v0.26.53...v0.26.54) (2021-03-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.49](https://github.com/cube-js/cube.js/compare/v0.26.48...v0.26.49) (2021-03-05) - -### Features - -- **elasticsearch-driver:** Introduce typings ([c0e519d](https://github.com/cube-js/cube.js/commit/c0e519d1daab5e04c11ddd1a54fe2fdb213b91f7)) -- **elasticsearch-driver:** Support for elastic.co & improve docs ([#2240](https://github.com/cube-js/cube.js/issues/2240)) ([d8557f6](https://github.com/cube-js/cube.js/commit/d8557f6487ea98c19c055cc94b94b284dd273835)) - -## [0.26.45](https://github.com/cube-js/cube.js/compare/v0.26.44...v0.26.45) (2021-03-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.38](https://github.com/cube-js/cube.js/compare/v0.26.37...v0.26.38) (2021-02-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.35](https://github.com/cube-js/cube.js/compare/v0.26.34...v0.26.35) (2021-02-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.25](https://github.com/cube-js/cube.js/compare/v0.26.24...v0.26.25) (2021-02-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.23](https://github.com/cube-js/cube.js/compare/v0.26.22...v0.26.23) (2021-02-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.22](https://github.com/cube-js/cube.js/compare/v0.26.21...v0.26.22) (2021-02-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.19](https://github.com/cube-js/cube.js/compare/v0.26.18...v0.26.19) (2021-02-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.16](https://github.com/cube-js/cube.js/compare/v0.26.15...v0.26.16) (2021-02-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.15](https://github.com/cube-js/cube.js/compare/v0.26.14...v0.26.15) (2021-02-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.13](https://github.com/cube-js/cube.js/compare/v0.26.12...v0.26.13) (2021-02-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.12](https://github.com/cube-js/cube.js/compare/v0.26.11...v0.26.12) (2021-02-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.11](https://github.com/cube-js/cube.js/compare/v0.26.10...v0.26.11) (2021-02-10) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.10](https://github.com/cube-js/cube.js/compare/v0.26.9...v0.26.10) (2021-02-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.7](https://github.com/cube-js/cube.js/compare/v0.26.6...v0.26.7) (2021-02-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.6](https://github.com/cube-js/cube.js/compare/v0.26.5...v0.26.6) (2021-02-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.26.2](https://github.com/cube-js/cube.js/compare/v0.26.1...v0.26.2) (2021-02-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.26.0](https://github.com/cube-js/cube.js/compare/v0.25.33...v0.26.0) (2021-02-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.32](https://github.com/cube-js/cube.js/compare/v0.25.31...v0.25.32) (2021-01-29) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.30](https://github.com/cube-js/cube.js/compare/v0.25.29...v0.25.30) (2021-01-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.29](https://github.com/cube-js/cube.js/compare/v0.25.28...v0.25.29) (2021-01-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.26](https://github.com/cube-js/cube.js/compare/v0.25.25...v0.25.26) (2021-01-25) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.24](https://github.com/cube-js/cube.js/compare/v0.25.23...v0.25.24) (2021-01-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.23](https://github.com/cube-js/cube.js/compare/v0.25.22...v0.25.23) (2021-01-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.22](https://github.com/cube-js/cube.js/compare/v0.25.21...v0.25.22) (2021-01-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.21](https://github.com/cube-js/cube.js/compare/v0.25.20...v0.25.21) (2021-01-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.20](https://github.com/cube-js/cube.js/compare/v0.25.19...v0.25.20) (2021-01-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.18](https://github.com/cube-js/cube.js/compare/v0.25.17...v0.25.18) (2021-01-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.15](https://github.com/cube-js/cube.js/compare/v0.25.14...v0.25.15) (2021-01-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.13](https://github.com/cube-js/cube.js/compare/v0.25.12...v0.25.13) (2021-01-07) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.6](https://github.com/cube-js/cube.js/compare/v0.25.5...v0.25.6) (2020-12-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.5](https://github.com/cube-js/cube.js/compare/v0.25.4...v0.25.5) (2020-12-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.4](https://github.com/cube-js/cube.js/compare/v0.25.3...v0.25.4) (2020-12-30) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.2](https://github.com/cube-js/cube.js/compare/v0.25.1...v0.25.2) (2020-12-27) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.25.1](https://github.com/cube-js/cube.js/compare/v0.25.0...v0.25.1) (2020-12-24) - -### Features - -- **elasticsearch-driver:** Support CUBEJS_DB_ELASTIC_QUERY_FORMAT, Thanks [@dylman79](https://github.com/dylman79) ([a7460f5](https://github.com/cube-js/cube.js/commit/a7460f5d45dc7e9d96b65f6cc36df810a5b9312e)) - -# [0.25.0](https://github.com/cube-js/cube.js/compare/v0.24.15...v0.25.0) (2020-12-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.13](https://github.com/cube-js/cube.js/compare/v0.24.12...v0.24.13) (2020-12-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.12](https://github.com/cube-js/cube.js/compare/v0.24.11...v0.24.12) (2020-12-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.9](https://github.com/cube-js/cube.js/compare/v0.24.8...v0.24.9) (2020-12-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.8](https://github.com/cube-js/cube.js/compare/v0.24.7...v0.24.8) (2020-12-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.6](https://github.com/cube-js/cube.js/compare/v0.24.5...v0.24.6) (2020-12-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.5](https://github.com/cube-js/cube.js/compare/v0.24.4...v0.24.5) (2020-12-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.4](https://github.com/cube-js/cube.js/compare/v0.24.3...v0.24.4) (2020-12-07) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.3](https://github.com/cube-js/cube.js/compare/v0.24.2...v0.24.3) (2020-12-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.24.2](https://github.com/cube-js/cube.js/compare/v0.24.1...v0.24.2) (2020-11-27) - -### Features - -- **@cubejs-backend/query-orchestrator:** Initial move to TypeScript ([#1462](https://github.com/cube-js/cube.js/issues/1462)) ([101e8dc](https://github.com/cube-js/cube.js/commit/101e8dc90d4b1266c0327adb86cab3e3caa8d4d0)) - -# [0.24.0](https://github.com/cube-js/cube.js/compare/v0.23.15...v0.24.0) (2020-11-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.23.14](https://github.com/cube-js/cube.js/compare/v0.23.13...v0.23.14) (2020-11-22) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.23.11](https://github.com/cube-js/cube.js/compare/v0.23.10...v0.23.11) (2020-11-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.23.8](https://github.com/cube-js/cube.js/compare/v0.23.7...v0.23.8) (2020-11-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.23.6](https://github.com/cube-js/cube.js/compare/v0.23.5...v0.23.6) (2020-11-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.23.3](https://github.com/cube-js/cube.js/compare/v0.23.2...v0.23.3) (2020-10-31) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.23.0](https://github.com/cube-js/cube.js/compare/v0.22.4...v0.23.0) (2020-10-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.22.4](https://github.com/cube-js/cube.js/compare/v0.22.3...v0.22.4) (2020-10-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.22.2](https://github.com/cube-js/cube.js/compare/v0.22.1...v0.22.2) (2020-10-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.22.0](https://github.com/cube-js/cube.js/compare/v0.21.2...v0.22.0) (2020-10-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.21.1](https://github.com/cube-js/cube.js/compare/v0.21.0...v0.21.1) (2020-10-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.21.0](https://github.com/cube-js/cube.js/compare/v0.20.15...v0.21.0) (2020-10-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.20.13](https://github.com/cube-js/cube.js/compare/v0.20.12...v0.20.13) (2020-10-07) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.20.9](https://github.com/cube-js/cube.js/compare/v0.20.8...v0.20.9) (2020-09-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.20.0](https://github.com/cube-js/cube.js/compare/v0.19.61...v0.20.0) (2020-08-26) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.61](https://github.com/cube-js/cube.js/compare/v0.19.60...v0.19.61) (2020-08-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.60](https://github.com/cube-js/cube.js/compare/v0.19.59...v0.19.60) (2020-08-08) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.56](https://github.com/cube-js/cube.js/compare/v0.19.55...v0.19.56) (2020-08-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.54](https://github.com/cube-js/cube.js/compare/v0.19.53...v0.19.54) (2020-07-23) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.53](https://github.com/cube-js/cube.js/compare/v0.19.52...v0.19.53) (2020-07-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.52](https://github.com/cube-js/cube.js/compare/v0.19.51...v0.19.52) (2020-07-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.50](https://github.com/cube-js/cube.js/compare/v0.19.49...v0.19.50) (2020-07-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.48](https://github.com/cube-js/cube.js/compare/v0.19.47...v0.19.48) (2020-07-11) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.46](https://github.com/cube-js/cube.js/compare/v0.19.45...v0.19.46) (2020-07-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.38](https://github.com/cube-js/cube.js/compare/v0.19.37...v0.19.38) (2020-06-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.36](https://github.com/cube-js/cube.js/compare/v0.19.35...v0.19.36) (2020-06-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.17](https://github.com/cube-js/cube.js/compare/v0.19.16...v0.19.17) (2020-05-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.15](https://github.com/cube-js/cube.js/compare/v0.19.14...v0.19.15) (2020-05-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.14](https://github.com/cube-js/cube.js/compare/v0.19.13...v0.19.14) (2020-04-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.9](https://github.com/cube-js/cube.js/compare/v0.19.8...v0.19.9) (2020-04-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.8](https://github.com/cube-js/cube.js/compare/v0.19.7...v0.19.8) (2020-04-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.7](https://github.com/cube-js/cube.js/compare/v0.19.6...v0.19.7) (2020-04-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.6](https://github.com/cube-js/cube.js/compare/v0.19.5...v0.19.6) (2020-04-14) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.19.5](https://github.com/cube-js/cube.js/compare/v0.19.4...v0.19.5) (2020-04-13) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.19.0](https://github.com/cube-js/cube.js/compare/v0.18.32...v0.19.0) (2020-04-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.30](https://github.com/cube-js/cube.js/compare/v0.18.29...v0.18.30) (2020-04-04) - -### Features - -- Native X-Pack SQL ElasticSearch Driver ([#551](https://github.com/cube-js/cube.js/issues/551)) ([efde731](https://github.com/cube-js/cube.js/commit/efde731)) - -## [0.18.18](https://github.com/cube-js/cube.js/compare/v0.18.17...v0.18.18) (2020-03-28) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.17](https://github.com/cube-js/cube.js/compare/v0.18.16...v0.18.17) (2020-03-24) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.13](https://github.com/cube-js/cube.js/compare/v0.18.12...v0.18.13) (2020-03-21) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.12](https://github.com/cube-js/cube.js/compare/v0.18.11...v0.18.12) (2020-03-19) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.11](https://github.com/cube-js/cube.js/compare/v0.18.10...v0.18.11) (2020-03-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.7](https://github.com/cube-js/cube.js/compare/v0.18.6...v0.18.7) (2020-03-17) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.6](https://github.com/cube-js/cube.js/compare/v0.18.5...v0.18.6) (2020-03-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.5](https://github.com/cube-js/cube.js/compare/v0.18.4...v0.18.5) (2020-03-15) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.4](https://github.com/cube-js/cube.js/compare/v0.18.3...v0.18.4) (2020-03-09) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.3](https://github.com/cube-js/cube.js/compare/v0.18.2...v0.18.3) (2020-03-02) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.2](https://github.com/cube-js/cube.js/compare/v0.18.1...v0.18.2) (2020-03-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.18.1](https://github.com/cube-js/cube.js/compare/v0.18.0...v0.18.1) (2020-03-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.18.0](https://github.com/cube-js/cube.js/compare/v0.17.10...v0.18.0) (2020-03-01) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.17.10](https://github.com/cube-js/cube.js/compare/v0.17.9...v0.17.10) (2020-02-20) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.17.9](https://github.com/cube-js/cube.js/compare/v0.17.8...v0.17.9) (2020-02-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.17.5](https://github.com/cube-js/cube.js/compare/v0.17.4...v0.17.5) (2020-02-07) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.17.3](https://github.com/cube-js/cube.js/compare/v0.17.2...v0.17.3) (2020-02-06) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.17.0](https://github.com/cube-js/cube.js/compare/v0.16.0...v0.17.0) (2020-02-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.16.0](https://github.com/cube-js/cube.js/compare/v0.15.4...v0.16.0) (2020-02-04) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.15.0](https://github.com/cube-js/cube.js/compare/v0.14.3...v0.15.0) (2020-01-18) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -# [0.14.0](https://github.com/cube-js/cube.js/compare/v0.13.12...v0.14.0) (2020-01-16) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.13.12](https://github.com/cube-js/cube.js/compare/v0.13.11...v0.13.12) (2020-01-12) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.13.9](https://github.com/cube-js/cube.js/compare/v0.13.8...v0.13.9) (2020-01-03) - -**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver - -## [0.13.6](https://github.com/cube-js/cube.js/compare/v0.13.5...v0.13.6) (2019-12-19) - -### Bug Fixes - -- **elasticsearch-driver:** TypeError: Cannot convert undefined or null to object ([2dc570f](https://github.com/cube-js/cube.js/commit/2dc570f)) - -## [0.13.5](https://github.com/cube-js/cube.js/compare/v0.13.4...v0.13.5) (2019-12-17) - -### Features - -- Elasticsearch driver preview ([d6a6a07](https://github.com/cube-js/cube.js/commit/d6a6a07)) diff --git a/packages/cubejs-elasticsearch-driver/LICENSE b/packages/cubejs-elasticsearch-driver/LICENSE deleted file mode 100644 index da67a9a3301be..0000000000000 --- a/packages/cubejs-elasticsearch-driver/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018-2020 Cube Dev, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/packages/cubejs-elasticsearch-driver/README.md b/packages/cubejs-elasticsearch-driver/README.md deleted file mode 100644 index 407617bdfb78d..0000000000000 --- a/packages/cubejs-elasticsearch-driver/README.md +++ /dev/null @@ -1,23 +0,0 @@ -

Cube.js

- -[Website](https://cube.dev) • [Docs](https://cube.dev/docs) • [Blog](https://cube.dev/blog) • [Slack](https://slack.cube.dev) • [Twitter](https://twitter.com/the_cube_dev) - -[![npm version](https://badge.fury.io/js/%40cubejs-backend%2Fserver.svg)](https://badge.fury.io/js/%40cubejs-backend%2Fserver) -[![GitHub Actions](https://github.com/cube-js/cube.js/workflows/Build/badge.svg)](https://github.com/cube-js/cube.js/actions?query=workflow%3ABuild+branch%3Amaster) - -# Cube.js Elasticsearch Database Driver - -Elasticsearch driver. -Works with OpenDistro, native and elastic.co hosted versions of Elasticsearch. - -[Learn more](https://github.com/cube-js/cube.js#getting-started) - -### Support - -This driver has been contributed by Cube.js community member [Chad Faurie](https://github.com/chadfaurie). This package is **community supported** and should be used at your own risk. - -While the Cube Dev team is happy to review and accept future community contributions, we don't have active plans for further development. This includes bug fixes unless they affect different parts of Cube.js. **We're looking for maintainers for this package.** If you'd like to become a maintainer, please contact us in Cube.js Slack. - -### License - -Cube.js Elasticsearch Database Driver is [Apache 2.0 licensed](./LICENSE). diff --git a/packages/cubejs-elasticsearch-driver/docker-compose.yml b/packages/cubejs-elasticsearch-driver/docker-compose.yml deleted file mode 100644 index be3b5a76a3f36..0000000000000 --- a/packages/cubejs-elasticsearch-driver/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: '3' -services: - es-distro: - image: amazon/opendistro-for-elasticsearch:1.13.1 - environment: - - discovery.type=single-node - - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping - - ES_JAVA_OPTS=-Xms512m -Xmx512m - ports: - - 9200:9200 - healthcheck: - test: curl -k -u admin:admin --silent --fail https://localhost:9200/_cluster/health || exit 1 - timeout: 5s - interval: 2s - retries: 3 - start_period: 10s diff --git a/packages/cubejs-elasticsearch-driver/driver/ElasticSearchDriver.js b/packages/cubejs-elasticsearch-driver/driver/ElasticSearchDriver.js deleted file mode 100644 index cd0e06e9b801c..0000000000000 --- a/packages/cubejs-elasticsearch-driver/driver/ElasticSearchDriver.js +++ /dev/null @@ -1,187 +0,0 @@ -/** - * @copyright Cube Dev, Inc. - * @license Apache-2.0 - * @fileoverview The `ElasticSearchDriver` and related types declaration. - */ - -const { - getEnv, - assertDataSource, -} = require('@cubejs-backend/shared'); -const { Client } = require('@elastic/elasticsearch'); -const SqlString = require('sqlstring'); -const { BaseDriver } = require('@cubejs-backend/base-driver'); - -/** - * ElasticSearch driver class. - */ -class ElasticSearchDriver extends BaseDriver { - /** - * Returns default concurrency value. - * @return {number} - */ - static getDefaultConcurrency() { - return 2; - } - - /** - * Class constructor. - */ - constructor(config = {}) { - super({ - testConnectionTimeout: config.testConnectionTimeout, - }); - - const dataSource = - config.dataSource || - assertDataSource('default'); - const preAggregations = config.preAggregations || false; - - const auth = { - username: getEnv('dbUser', { dataSource, preAggregations }), - password: getEnv('dbPass', { dataSource, preAggregations }), - }; - if ( - getEnv('elasticApiId', { dataSource, preAggregations }) || - getEnv('elasticApiKey', { dataSource, preAggregations }) - ) { - auth.apiKey = { - id: getEnv('elasticApiId', { dataSource, preAggregations }), - api_key: getEnv('elasticApiKey', { dataSource, preAggregations }), - }; - } - - // TODO: This config applies to AWS ES, Elastic.co ES, Native ES - // and OpenDistro ES. They have different dialects according to - // their respective documentation. - this.config = { - auth, - url: getEnv('dbUrl', { dataSource, preAggregations }), - ssl: this.getSslOptions(dataSource, preAggregations), - openDistro: - (getEnv('elasticOpenDistro', { dataSource, preAggregations }) || 'false') - .toLowerCase() === 'true' || - getEnv('dbType', { dataSource, preAggregations }) === 'odelasticsearch', - queryFormat: - getEnv('elasticQueryFormat', { dataSource, preAggregations }) || 'jdbc', - ...config, - }; - - this.client = new Client({ - node: this.config.url, - cloud: this.config.cloud, - auth: this.config.auth, - ssl: this.config.ssl - }); - - if (this.config.openDistro) { - this.sqlClient = new Client({ - node: `${this.config.url}/_opendistro`, - ssl: this.config.ssl, - auth: this.config.auth, - }); - } else { - this.sqlClient = this.client; - } - } - - /** - * Returns the configurable driver options - * Note: It returns the unprefixed option names. - * In case of using multisources options need to be prefixed manually. - */ - static driverEnvVariables() { - return [ - 'CUBEJS_DB_URL', - 'CUBEJS_DB_ELASTIC_QUERY_FORMAT', - 'CUBEJS_DB_ELASTIC_OPENDISTRO', - 'CUBEJS_DB_ELASTIC_APIKEY_ID', - 'CUBEJS_DB_ELASTIC_APIKEY_KEY', - ]; - } - - async testConnection() { - return this.client.cat.indices({ - format: 'json' - }); - } - - async release() { - await this.client.close(); - - if (this.config.openDistro && this.sqlClient) { - await this.sqlClient.close(); - } - } - - readOnly() { - // Both ES X-Pack & Open Distro don't support table creation - return true; - } - - async query(query, values) { - try { - const result = (await this.sqlClient.sql.query({ // TODO cursor - format: this.config.queryFormat, - body: { - query: SqlString.format(query, values) - } - })).body; - - // INFO: cloud left in place for backward compatibility - if (this.config.cloud || ['jdbc', 'json'].includes(this.config.queryFormat)) { - const compiled = result.rows.map( - r => result.columns.reduce((prev, cur, idx) => ({ ...prev, [cur.name]: r[idx] }), {}) - ); - - return compiled; - } - return result && result.aggregations && this.traverseAggregations(result.aggregations); - } catch (e) { - if (e.body) { - throw new Error(JSON.stringify(e.body, null, 2)); - } - - throw e; - } - } - - traverseAggregations(aggregations) { - const fields = Object.keys(aggregations).filter(k => k !== 'key' && k !== 'doc_count'); - if (fields.find(f => aggregations[f].hasOwnProperty('value'))) { - return [fields.map(f => ({ [f]: aggregations[f].value })).reduce((a, b) => ({ ...a, ...b }))]; - } - if (fields.length === 0) { - return [{}]; - } - if (fields.length !== 1) { - throw new Error(`Unexpected multiple fields at ${fields.join(', ')}`); - } - const dimension = fields[0]; - if (!aggregations[dimension].buckets) { - throw new Error(`Expecting buckets at dimension ${dimension}: ${aggregations[dimension]}`); - } - return aggregations[dimension].buckets.map(b => this.traverseAggregations(b).map( - innerRow => ({ ...innerRow, [dimension]: b.key }) - )).reduce((a, b) => a.concat(b), []); - } - - async tablesSchema() { - const indices = await this.client.cat.indices({ - format: 'json' - }); - - const schema = (await Promise.all(indices.body.map(async i => { - const props = (await this.client.indices.getMapping({ index: i.index })).body[i.index].mappings.properties || {}; - return { - [i.index]: Object.keys(props).map(p => ({ name: p, type: props[p].type })).filter(c => !!c.type) - }; - }))).reduce((a, b) => ({ ...a, ...b })); - - return { - main: schema - }; - } -} - -module.exports = ElasticSearchDriver; diff --git a/packages/cubejs-elasticsearch-driver/driver/index.d.ts b/packages/cubejs-elasticsearch-driver/driver/index.d.ts deleted file mode 100644 index db8bfe95f7b65..0000000000000 --- a/packages/cubejs-elasticsearch-driver/driver/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { ClientOptions } from "@elastic/elasticsearch"; -import { BaseDriver } from "@cubejs-backend/base-driver"; - -declare module "@cubejs-backend/elasticsearch-driver" { - export type ElasticSearchDriverOptions = Pick & { - url?: string; - queryFormat?: string; - openDistro?: boolean; - }; - - export default class ElasticSearchDriver extends BaseDriver { - constructor(options?: ElasticSearchDriverOptions); - } -} diff --git a/packages/cubejs-elasticsearch-driver/jest.config.js b/packages/cubejs-elasticsearch-driver/jest.config.js deleted file mode 100644 index 708af916344d0..0000000000000 --- a/packages/cubejs-elasticsearch-driver/jest.config.js +++ /dev/null @@ -1,11 +0,0 @@ -const base = require('../../jest.base.config'); - -/** @type {import('jest').Config} */ -module.exports = { - ...base, - rootDir: '.', - testMatch: [ - '**/__tests__/**/*.js?(x)', - '**/?(*.)+(spec|test|integration).js?(x)' - ] -}; diff --git a/packages/cubejs-elasticsearch-driver/package.json b/packages/cubejs-elasticsearch-driver/package.json deleted file mode 100644 index 69b089e4e70d8..0000000000000 --- a/packages/cubejs-elasticsearch-driver/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "@cubejs-backend/elasticsearch-driver", - "description": "Cube.js elasticsearch database driver", - "author": "Cube Dev, Inc.", - "version": "1.6.67", - "repository": { - "type": "git", - "url": "https://github.com/cube-js/cube.git", - "directory": "packages/cubejs-elasticsearch-driver" - }, - "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" - }, - "main": "driver/ElasticSearchDriver.js", - "typings": "driver/index.d.ts", - "scripts": { - "lint": "eslint **/*.js", - "lint:fix": "eslint --fix **/*.js", - "integration": "jest --ci ./test/*.integration.js", - "integration:elastic": "yarn run integration" - }, - "files": [ - "driver" - ], - "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", - "@elastic/elasticsearch": "7.12.0", - "sqlstring": "^2.3.1" - }, - "license": "Apache-2.0", - "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@types/jest": "^29", - "jest": "^29", - "testcontainers": "^10.28.0" - }, - "eslintConfig": { - "extends": "../cubejs-linter" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/cubejs-elasticsearch-driver/test/ElasticSearchOpenDistro.integration.js b/packages/cubejs-elasticsearch-driver/test/ElasticSearchOpenDistro.integration.js deleted file mode 100644 index 2f9fa67422e8c..0000000000000 --- a/packages/cubejs-elasticsearch-driver/test/ElasticSearchOpenDistro.integration.js +++ /dev/null @@ -1,76 +0,0 @@ -/* globals describe, afterAll, beforeAll, test, expect, jest, it */ -const { GenericContainer, Wait } = require('testcontainers'); -const ElasticSearchDriver = require('../driver/ElasticSearchDriver'); - -describe('ElasticSearchDriver OpenDistro', () => { - let container; - let elasticSearchDriver; - - jest.setTimeout(60 * 2 * 1000); - - const version = process.env.TEST_ELASTIC_OPENDISTRO_VERSION || '1.13.1'; - - const startContainer = () => new GenericContainer(`amazon/opendistro-for-elasticsearch:${version}`) - .withEnvironment({ - 'discovery.type': 'single-node', - 'bootstrap.memory_lock': 'true', - ES_JAVA_OPTS: '-Xms512m -Xmx512m', - }) - .withExposedPorts(9200) - .withHealthCheck({ - test: [ - 'CMD-SHELL', - 'curl -k -u admin:admin --silent --fail https://localhost:9200/_cluster/health || exit 1' - ], - interval: 3 * 1000, - startPeriod: 15 * 1000, - timeout: 500, - retries: 30 - }) - .withWaitStrategy(Wait.forHealthCheck()) - .start(); - - const createDriver = (c) => { - const port = c && c.getMappedPort(9200) || 9200; - - return new ElasticSearchDriver({ - url: `https://localhost:${port}`, - ssl: { - rejectUnauthorized: false, - }, - auth: { - username: 'admin', - password: 'admin', - }, - openDistro: true, - queryFormat: 'json' - }); - }; - - beforeAll(async () => { - container = await startContainer(); - elasticSearchDriver = createDriver(container); - elasticSearchDriver.setLogger((msg, event) => console.log(`${msg}: ${JSON.stringify(event)}`)); - }); - - it('testConnection', async () => { - await elasticSearchDriver.testConnection(); - }); - - // It's not supported in Open Distro, probably it's supported in v2 Query Engine for Open Distro - // it('SELECT 1', async () => { - // await elasticSearchDriver.query('SELECT 1'); - // }); - - afterAll(async () => { - await elasticSearchDriver.release(); - - if (container) { - console.log('[container] Stopping'); - - await container.stop(); - - console.log('[container] Stopped'); - } - }); -}); diff --git a/packages/cubejs-schema-compiler/src/adapter/AWSElasticSearchQuery.ts b/packages/cubejs-schema-compiler/src/adapter/AWSElasticSearchQuery.ts deleted file mode 100644 index 2658ca53183fc..0000000000000 --- a/packages/cubejs-schema-compiler/src/adapter/AWSElasticSearchQuery.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { BaseFilter } from './BaseFilter'; -import { ElasticSearchQuery } from './ElasticSearchQuery'; - -const GRANULARITY_TO_INTERVAL = { - day: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-dd 00:00:00.000')`, - // eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars - week: (date) => { throw new Error('Week is unsupported'); }, // TODO - hour: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-dd HH:00:00.000')`, - minute: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-dd HH:mm:00.000')`, - second: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-dd HH:mm:ss.000')`, - month: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-01 00:00:00.000')`, - year: (date) => `DATE_FORMAT(${date}, 'yyyy-01-01 00:00:00.000')` -}; - -class AWSElasticSearchQueryFilter extends BaseFilter { - public likeIgnoreCase(column, not, param, type) { - const p = (!type || type === 'contains' || type === 'ends') ? '%' : ''; - const s = (!type || type === 'contains' || type === 'starts') ? '%' : ''; - return `${column}${not ? ' NOT' : ''} LIKE CONCAT('${p}', ${this.allocateParam(param)}, '${s}')`; - } -} - -export class AWSElasticSearchQuery extends ElasticSearchQuery { - public override newFilter(filter) { - return new AWSElasticSearchQueryFilter(this, filter); - } - - public override subtractInterval(date, interval) { - return `DATE_SUB(${date}, INTERVAL ${interval})`; - } - - public override addInterval(date, interval) { - return `DATE_ADD(${date}, INTERVAL ${interval})`; - } - - public override timeGroupedColumn(granularity, dimension) { - return GRANULARITY_TO_INTERVAL[granularity](dimension); - } - - public override unixTimestampSql() { - return 'EXTRACT(EPOCH FROM NOW())'; - } -} diff --git a/packages/cubejs-schema-compiler/src/adapter/ElasticSearchQuery.ts b/packages/cubejs-schema-compiler/src/adapter/ElasticSearchQuery.ts deleted file mode 100644 index 0b009be8d7ecd..0000000000000 --- a/packages/cubejs-schema-compiler/src/adapter/ElasticSearchQuery.ts +++ /dev/null @@ -1,157 +0,0 @@ -/* eslint-disable max-classes-per-file */ -import R from 'ramda'; - -import { findMinGranularityDimension } from '@cubejs-backend/shared'; -import { BaseQuery } from './BaseQuery'; -import { BaseFilter } from './BaseFilter'; -import { BaseMeasure } from './BaseMeasure'; -import { BaseDimension } from './BaseDimension'; -import { BaseTimeDimension } from './BaseTimeDimension'; - -const GRANULARITY_TO_INTERVAL = { - day: date => `DATE_TRUNC('day', ${date}::datetime)`, - week: date => `DATE_TRUNC('week', ${date}::datetime)`, - hour: date => `DATE_TRUNC('hour', ${date}::datetime)`, - minute: date => `DATE_TRUNC('minute', ${date}::datetime)`, - second: date => `DATE_TRUNC('second', ${date}::datetime)`, - month: date => `DATE_TRUNC('month', ${date}::datetime)`, - quarter: date => `DATE_TRUNC('quarter', ${date}::datetime)`, - year: date => `DATE_TRUNC('year', ${date}::datetime)` -}; - -class ElasticSearchQueryFilter extends BaseFilter { - public likeIgnoreCase(column, not, param, type) { - if (type === 'starts') { - return `${not ? ' NOT' : ''} WHERE ${column} LIKE ${this.allocateParam(param)}%`; - } else if (type === 'ends') { - return `${not ? ' NOT' : ''} WHERE ${column} LIKE %${this.allocateParam(param)}`; - } else { - return `${not ? ' NOT' : ''} MATCH(${column}, ${this.allocateParam(param)}, 'fuzziness=AUTO:1,5')`; - } - } -} - -export class ElasticSearchQuery extends BaseQuery { - public override newFilter(filter) { - return new ElasticSearchQueryFilter(this, filter); - } - - public override convertTz(field) { - return `${field}`; // TODO - } - - public override timeStampCast(value) { - return `${value}`; - } - - public override dateTimeCast(value) { - return `${value}`; // TODO - } - - public override subtractInterval(date, interval) { - // TODO: Test this, note sure how value gets populated here - return `${date} - INTERVAL ${interval}`; - } - - public override addInterval(date, interval) { - // TODO: Test this, note sure how value gets populated here - return `${date} + INTERVAL ${interval}`; - } - - public override timeGroupedColumn(granularity, dimension) { - return GRANULARITY_TO_INTERVAL[granularity](dimension); - } - - public override unixTimestampSql() { - return 'TIMESTAMP_DIFF(\'seconds\', \'1970-01-01T00:00:00.000Z\'::datetime, CURRENT_TIMESTAMP())'; - } - - public override groupByClause() { - if (this.ungrouped) { - return ''; - } - const dimensionsForSelect = this.dimensionsForSelect(); - const dimensionColumns = R.flatten( - dimensionsForSelect.map(s => s.selectColumns() && s.dimensionSql()) - ).filter(s => !!s); - - return dimensionColumns.length ? ` GROUP BY ${dimensionColumns.join(', ')}` : ''; - } - - public override orderHashToString(hash: { id: string, desc: boolean }) { - if (!hash || !hash.id) { - return null; - } - - const fieldAlias = this.getFieldAlias(hash.id); - - if (fieldAlias === null) { - return null; - } - - const direction = hash.desc ? 'DESC' : 'ASC'; - return `${fieldAlias} ${direction}`; - } - - /** - * This implementation is a bit different from the one in BaseQuery - * as it uses dimensionSql() as ordering expression - */ - public getFieldAlias(id: string): string | null { - const equalIgnoreCase = (a: any, b: any) => ( - typeof a === 'string' && typeof b === 'string' && a.toUpperCase() === b.toUpperCase() - ); - - let field: BaseMeasure | BaseDimension | undefined; - - const path = id.split('.'); - - // Granularity is specified - if (path.length === 3) { - const memberName = path.slice(0, 2).join('.'); - const granularity = path[2]; - - field = this.timeDimensions - // Not all time dimensions are used in select list, some are just filters, - // but they exist in this.timeDimensions, so need to filter them out - .filter(d => d.selectColumns()) - .find( - d => ( - (equalIgnoreCase(d.dimension, memberName) && (d.granularityObj?.granularity === granularity)) || - equalIgnoreCase(d.expressionName, memberName) - ) - ); - - if (field) { - return field.dimensionSql(); - } - - return null; - } - - const dimensionsForSelect = this.dimensionsForSelect() - // Not all time dimensions are used in select list, some are just filters, - // but they exist in this.timeDimensions, so need to filter them out - .filter(d => d.selectColumns()); - - const found = findMinGranularityDimension(id, dimensionsForSelect); - - if (found?.dimension) { - return (found.dimension as BaseDimension).dimensionSql(); - } - - field = this.measures.find( - d => equalIgnoreCase(d.measure, id) || equalIgnoreCase(d.expressionName, id) - ); - - if (field) { - return field.aliasName(); // TODO isn't supported - } - - return null; - } - - public override escapeColumnName(name) { - return `${name}`; - } -} diff --git a/packages/cubejs-schema-compiler/src/adapter/QueryBuilder.ts b/packages/cubejs-schema-compiler/src/adapter/QueryBuilder.ts index 8ed97484eaf9f..f99bff6277a3e 100644 --- a/packages/cubejs-schema-compiler/src/adapter/QueryBuilder.ts +++ b/packages/cubejs-schema-compiler/src/adapter/QueryBuilder.ts @@ -12,8 +12,6 @@ import { CrateQuery } from './CrateQuery'; import { HiveQuery } from './HiveQuery'; import { OracleQuery } from './OracleQuery'; import { SqliteQuery } from './SqliteQuery'; -import { AWSElasticSearchQuery } from './AWSElasticSearchQuery'; -import { ElasticSearchQuery } from './ElasticSearchQuery'; import { CubeStoreQuery } from './CubeStoreQuery'; import { AthenaQuery } from './AthenaQuery'; import { TrinoQuery } from './TrinoQuery'; @@ -37,8 +35,6 @@ const ADAPTERS = { hive: HiveQuery, oracle: OracleQuery, sqlite: SqliteQuery, - awselasticsearch: AWSElasticSearchQuery, - elasticsearch: ElasticSearchQuery, materialize: PostgresQuery, cubestore: CubeStoreQuery, }; diff --git a/packages/cubejs-schema-compiler/src/adapter/index.ts b/packages/cubejs-schema-compiler/src/adapter/index.ts index 7a4cb76cf5566..fdb9bdfacf9c6 100644 --- a/packages/cubejs-schema-compiler/src/adapter/index.ts +++ b/packages/cubejs-schema-compiler/src/adapter/index.ts @@ -25,10 +25,8 @@ export { PreAggregationReferences } from '../compiler/CubeEvaluator'; // export * from './SnowflakeQuery'; // export * from './SqliteQuery'; // export * from './VerticaQuery'; -// export * from './AWSElasticSearchQuery'; // export * from './BigqueryQuery'; // export * from './ClickHouseQuery'; -// export * from './ElasticSearchQuery'; // export * from './HiveQuery'; // export * from './MongoBiQuery'; // export * from './MssqlQuery'; diff --git a/packages/cubejs-server-core/src/core/DriverDependencies.ts b/packages/cubejs-server-core/src/core/DriverDependencies.ts index 04f42704048aa..313e66e6b1b35 100644 --- a/packages/cubejs-server-core/src/core/DriverDependencies.ts +++ b/packages/cubejs-server-core/src/core/DriverDependencies.ts @@ -19,8 +19,6 @@ const DriverDependencies: Record = { trino: '@cubejs-backend/trino-driver', oracle: '@cubejs-backend/oracle-driver', sqlite: '@cubejs-backend/sqlite-driver', - awselasticsearch: '@cubejs-backend/elasticsearch-driver', - elasticsearch: '@cubejs-backend/elasticsearch-driver', dremio: '@cubejs-backend/dremio-driver', druid: '@cubejs-backend/druid-driver', duckdb: '@cubejs-backend/duckdb-driver', diff --git a/packages/cubejs-server-core/src/core/types.ts b/packages/cubejs-server-core/src/core/types.ts index 9edcdd552139e..e02f480fb18df 100644 --- a/packages/cubejs-server-core/src/core/types.ts +++ b/packages/cubejs-server-core/src/core/types.ts @@ -114,8 +114,6 @@ export type DatabaseType = | 'mssql' | 'mysql' | 'mysqlauroraserverless' - | 'elasticsearch' - | 'awselasticsearch' | 'oracle' | 'postgres' | 'prestodb' diff --git a/yarn.lock b/yarn.lock index e7d89408b7872..6be3ea908c535 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2899,17 +2899,6 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz#593da7a17a31a72a874e313677183334a49b01c9" integrity sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA== -"@elastic/elasticsearch@7.12.0": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-7.12.0.tgz#dbb51a2841f644b670a56d8c15899e860928856f" - integrity sha512-GquUEytCijFRPEk3DKkkDdyhspB3qbucVQOwih9uNyz3iz804I+nGBUsFo2LwVvLQmQfEM0IY2+yoYfEz5wMug== - dependencies: - debug "^4.3.1" - hpagent "^0.1.1" - ms "^2.1.3" - pump "^3.0.0" - secure-json-parse "^2.3.1" - "@emnapi/core@1.9.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.9.2.tgz#3870265ecffc7352d01ead62d8d83d8358a2d034" @@ -15849,11 +15838,6 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -hpagent@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.2.tgz#cab39c66d4df2d4377dbd212295d878deb9bdaa9" - integrity sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ== - html-encoding-sniffer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" @@ -23320,11 +23304,6 @@ scroll-into-view-if-needed@^2.2.25: dependencies: compute-scroll-into-view "^1.0.17" -secure-json-parse@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.4.0.tgz#5aaeaaef85c7a417f76271a4f5b0cc3315ddca85" - integrity sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg== - seek-bzip@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" From f45ea456e4c3bfdc3663f8c992c911fdc9ed3730 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Wed, 10 Jun 2026 12:08:56 +0200 Subject: [PATCH 02/24] feat(schema-compiler)!: Remove deprecated running_total measure type (#11044) BREAKING CHANGE: The running_total measure type has been removed. Data models that use `type: running_total` will now fail validation. Replace them with a rolling_window measure using an unbounded trailing window. --- DEPRECATION.md | 8 +- .../src/adapter/BaseMeasure.ts | 8 +- .../src/adapter/BaseQuery.js | 12 -- .../src/adapter/BigqueryQuery.ts | 15 -- .../src/compiler/CubeValidator.ts | 6 +- .../clickhouse-graph-builder.test.ts | 119 -------------- .../integration/mssql/mssql-ungrouped.test.ts | 12 -- .../postgres/sql-generation-logic.test.ts | 12 -- .../postgres/sql-generation.test.ts | 115 ------------- .../logical_plan/multistage/rolling_window.rs | 6 +- .../cubesqlplanner/src/physical_plan/join.rs | 37 ----- .../cubesqlplanner/src/physical_plan/mod.rs | 4 +- .../physical_plan/sql_nodes/rolling_window.rs | 2 +- .../processors/multi_stage_rolling_window.rs | 7 - .../planner/planners/multi_stage/member.rs | 14 +- .../multi_stage/member_query_planner.rs | 1 - .../multi_stage/multi_stage_query_planner.rs | 4 +- .../symbols/common/aggregation_type.rs | 16 +- .../src/planner/symbols/measure_kinds/mod.rs | 6 +- .../src/planner/symbols/measure_symbol.rs | 11 +- .../common/integration_rolling_window.yaml | 4 - .../yaml_files/common/measure_kind_tests.yaml | 3 - .../rolling_window/db_time_series.rs | 22 --- .../tests/integration/rolling_window/mod.rs | 1 - .../rolling_window/running_total.rs | 152 ------------------ ...__db_time_series__db_ts_running_total.snap | 17 -- ...al__running_total_and_regular_measure.snap | 22 --- ...ning_total__running_total_and_rolling.snap | 22 --- ...g_total__running_total_no_granularity.snap | 7 - ...l__running_total_with_day_granularity.snap | 22 --- ...g_total__running_total_with_dimension.snap | 44 ----- ...ning_total__running_total_with_filter.snap | 22 --- .../src/tests/measure_symbol.rs | 32 +--- rust/cubesql/cubesql/src/transport/ext.rs | 1 - 34 files changed, 21 insertions(+), 765 deletions(-) delete mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/running_total.rs delete mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__db_time_series__db_ts_running_total.snap delete mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_and_regular_measure.snap delete mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_and_rolling.snap delete mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_no_granularity.snap delete mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_day_granularity.snap delete mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_dimension.snap delete mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_filter.snap diff --git a/DEPRECATION.md b/DEPRECATION.md index 392591f9b00a7..0e4900c0c9c08 100644 --- a/DEPRECATION.md +++ b/DEPRECATION.md @@ -57,7 +57,7 @@ features: | Removed | [Node.js 14](#nodejs-14) | v0.32.0 | v0.35.0 | | Removed | [Using Redis for in-memory cache and queue](#using-redis-for-in-memory-cache-and-queue) | v0.32.0 | v0.36.0 | | Deprecated | [`SECURITY_CONTEXT`](#security_context) | v0.33.0 | | -| Deprecated | [`running_total` measure type](#running_total-measure-type) | v0.33.39 | | +| Removed | [`running_total` measure type](#running_total-measure-type) | v0.33.39 | v1.7.0 | | Removed | [Top-level `includes` parameter in views](#top-level-includes-parameter-in-views) | v0.34.34 | v1.3.0 | | Removed | [Node.js 16](#nodejs-16) | v0.35.0 | v0.36.0 | | Removed | [MySQL-based SQL API](#mysql-based-sql-api) | v0.35.0 | v0.35.0 | @@ -348,9 +348,11 @@ instead. **Deprecated in Release: v0.33.39** -The `running_total` measure type is now deprecated, and we recommend using +**Removed in Release: v1.7.0** + +The `running_total` measure type has been removed. Use a [`rolling_window`](https://cube.dev/docs/product/data-modeling/reference/measures#rolling_window) -to calculate running totals instead. +with an `unbounded` trailing window to calculate running totals instead. ### Top-level `includes` parameter in views diff --git a/packages/cubejs-schema-compiler/src/adapter/BaseMeasure.ts b/packages/cubejs-schema-compiler/src/adapter/BaseMeasure.ts index 6fff3530ee121..2762ca2223fed 100644 --- a/packages/cubejs-schema-compiler/src/adapter/BaseMeasure.ts +++ b/packages/cubejs-schema-compiler/src/adapter/BaseMeasure.ts @@ -260,13 +260,10 @@ export class BaseMeasure { } public static isCumulative(definition): boolean { - return definition.type === 'runningTotal' || !!definition.rollingWindow; + return !!definition.rollingWindow; } public rollingWindowDefinition() { - if (this.measureDefinition().type === 'runningTotal') { - throw new UserError('runningTotal rollups aren\'t supported. Please consider replacing runningTotal measure with rollingWindow.'); - } const { type } = this.measureDefinition().rollingWindow; if (type && type !== 'fixed') { throw new UserError(`Only fixed rolling windows are supported by Cube Store but got '${type}' rolling window`); @@ -276,9 +273,6 @@ export class BaseMeasure { public dateJoinCondition() { const definition = this.measureDefinition(); - if (definition.type === 'runningTotal') { - return this.query.runningTotalDateJoinCondition(); - } const { rollingWindow } = definition; if (rollingWindow.type === 'to_date') { return this.query.rollingWindowToDateJoinCondition(rollingWindow.granularity); diff --git a/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js b/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js index 99bb0f7146dcb..652370d368476 100644 --- a/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js +++ b/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js @@ -1122,16 +1122,6 @@ export class BaseQuery { }); } - runningTotalDateJoinCondition() { - return this.timeDimensions - .map( - d => [ - d, - (_dateFrom, dateTo, dateField, dimensionDateFrom, _dimensionDateTo) => `${dateField} >= ${dimensionDateFrom} AND ${dateField} <= ${dateTo}` - ] - ); - } - rollingWindowToDateJoinCondition(granularity) { return Object.values( this.timeDimensions.reduce((acc, td) => { @@ -3887,8 +3877,6 @@ export class BaseQuery { this.countDistinctApprox(evaluateSql); } else if (symbol.type === 'countDistinct' || symbol.type === 'count' && !symbol.sql && multiplied) { return `count(distinct ${evaluateSql})`; - } else if (symbol.type === 'runningTotal') { - return `sum(${evaluateSql})`; // TODO } if (multiplied) { if (symbol.type === 'number' && evaluateSql === 'count(*)') { diff --git a/packages/cubejs-schema-compiler/src/adapter/BigqueryQuery.ts b/packages/cubejs-schema-compiler/src/adapter/BigqueryQuery.ts index 5ec9906f91110..83834465db018 100644 --- a/packages/cubejs-schema-compiler/src/adapter/BigqueryQuery.ts +++ b/packages/cubejs-schema-compiler/src/adapter/BigqueryQuery.ts @@ -195,21 +195,6 @@ export class BigqueryQuery extends BaseQuery { return `UNIX_SECONDS(${this.nowTimestampSql()})`; } - /** - * Should be protected, but BaseQuery is in js - * Overridden from BaseQuery to support BigQuery strict data types for - * joining conditions (note timeStampCast) - */ - public override runningTotalDateJoinCondition() { - return this.timeDimensions - .map( - d => [ - d, - (_dateFrom: string, dateTo: string, dateField: string, dimensionDateFrom: string, _dimensionDateTo: string) => `${dateField} >= ${dimensionDateFrom} AND ${dateField} <= ${this.timeStampCast(dateTo)}` - ] - ); - } - /** * Should be protected, but BaseQuery is in js * Overridden from BaseQuery to support BigQuery strict data types for diff --git a/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts b/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts index 3b501eeca4f51..fa92c29859863 100644 --- a/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts +++ b/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts @@ -815,15 +815,15 @@ const CubeRefreshKeySchema = condition( ); const measureType = Joi.string().valid( - 'number', 'string', 'boolean', 'time', 'sum', 'avg', 'min', 'max', 'countDistinct', 'runningTotal', 'countDistinctApprox' + 'number', 'string', 'boolean', 'time', 'sum', 'avg', 'min', 'max', 'countDistinct', 'countDistinctApprox' ); const measureTypeWithCount = Joi.string().valid( - 'count', 'number', 'string', 'boolean', 'time', 'sum', 'avg', 'min', 'max', 'countDistinct', 'runningTotal', 'countDistinctApprox' + 'count', 'number', 'string', 'boolean', 'time', 'sum', 'avg', 'min', 'max', 'countDistinct', 'countDistinctApprox' ); const multiStageMeasureType = Joi.string().valid( - 'count', 'number', 'string', 'boolean', 'time', 'sum', 'avg', 'min', 'max', 'countDistinct', 'runningTotal', 'countDistinctApprox', 'numberAgg', + 'count', 'number', 'string', 'boolean', 'time', 'sum', 'avg', 'min', 'max', 'countDistinct', 'countDistinctApprox', 'numberAgg', 'rank' ); diff --git a/packages/cubejs-schema-compiler/test/integration/clickhouse/clickhouse-graph-builder.test.ts b/packages/cubejs-schema-compiler/test/integration/clickhouse/clickhouse-graph-builder.test.ts index 47d0548da1423..d3e94373448dd 100644 --- a/packages/cubejs-schema-compiler/test/integration/clickhouse/clickhouse-graph-builder.test.ts +++ b/packages/cubejs-schema-compiler/test/integration/clickhouse/clickhouse-graph-builder.test.ts @@ -51,10 +51,6 @@ describe('ClickHouse JoinGraph', () => { }] }, per_visitor_revenue: perVisitorRevenueMeasure, - revenueRunning: { - type: 'runningTotal', - sql: 'amount' - }, revenueRolling: { type: 'sum', sql: 'amount', @@ -86,14 +82,6 @@ describe('ClickHouse JoinGraph', () => { offset: 'start' } }, - runningCount: { - type: 'runningTotal', - sql: '1' - }, - runningRevenuePerCount: { - type: 'number', - sql: \`round(\${revenueRunning} / \${runningCount})\` - }, averageCheckins: { type: 'avg', sql: \`\${doubledCheckings}\` @@ -386,68 +374,6 @@ describe('ClickHouse JoinGraph', () => { visitors__per_visitor_revenue: '60' }])); - // FAILS - need to finish query to override ::timestamptz - it.skip('running total', () => { - const result = compiler.compile().then(() => { - const query = new ClickHouseQuery({ joinGraph, cubeEvaluator, compiler }, { - measures: [ - 'visitors.revenueRunning' - ], - timeDimensions: [{ - dimension: 'visitors.created_at', - granularity: 'day', - dateRange: ['2017-01-01', '2017-01-10'] - }], - order: [{ - id: 'visitors.created_at' - }], - timezone: 'America/Los_Angeles' - }); - - logSqlAndParams(query); - - // TODO ordering doesn't work for running total - return dbRunner.testQuery(query.buildSqlAndParams()).then(res => { - debugLog(JSON.stringify(res)); - expect(res).toEqual( - [{ - visitors__created_at_day: '2017-01-01T00:00:00.000Z', - visitors__revenue_running: null - }, { - visitors__created_at_day: '2017-01-02T00:00:00.000Z', - visitors__revenue_running: '100' - }, { - visitors__created_at_day: '2017-01-03T00:00:00.000Z', - visitors__revenue_running: '100' - }, { - visitors__created_at_day: '2017-01-04T00:00:00.000Z', - visitors__revenue_running: '300' - }, { - visitors__created_at_day: '2017-01-05T00:00:00.000Z', - visitors__revenue_running: '600' - }, { - visitors__created_at_day: '2017-01-06T00:00:00.000Z', - visitors__revenue_running: '1500' - }, { - visitors__created_at_day: '2017-01-07T00:00:00.000Z', - visitors__revenue_running: '1500' - }, { - visitors__created_at_day: '2017-01-08T00:00:00.000Z', - visitors__revenue_running: '1500' - }, { - visitors__created_at_day: '2017-01-09T00:00:00.000Z', - visitors__revenue_running: '1500' - }, { - visitors__created_at_day: '2017-01-10T00:00:00.000Z', - visitors__revenue_running: '1500' - }] - ); - }); - }); - - return result; - }); - // FAILS - need to finish query to override ::timestamptz it.skip('rolling', () => runQueryTest({ measures: [ @@ -578,51 +504,6 @@ describe('ClickHouse JoinGraph', () => { { visitors__created_at_sql_utils_day: '2017-01-06T00:00:00.000', visitors__visitor_count: '2' } ])); - it('running total total', () => runQueryTest({ - measures: [ - 'visitors.revenueRunning' - ], - timeDimensions: [{ - dimension: 'visitors.created_at', - dateRange: ['2017-01-01', '2017-01-10'] - }], - order: [{ - id: 'visitors.created_at' - }], - timezone: 'America/Los_Angeles' - }, [ - { - visitors__revenue_running: '1500' - } - ])); - - // FAILS Unmatched parentheses - it.skip('running total ratio', () => runQueryTest({ - measures: [ - 'visitors.runningRevenuePerCount' - ], - timeDimensions: [{ - dimension: 'visitors.created_at', - granularity: 'day', - dateRange: ['2017-01-01', '2017-01-10'] - }], - order: [{ - id: 'visitors.created_at' - }], - timezone: 'America/Los_Angeles' - }, [ - { visitors__created_at_day: '2017-01-01T00:00:00.000Z', visitors__running_revenue_per_count: null }, - { visitors__created_at_day: '2017-01-02T00:00:00.000Z', visitors__running_revenue_per_count: '100' }, - { visitors__created_at_day: '2017-01-03T00:00:00.000Z', visitors__running_revenue_per_count: '100' }, - { visitors__created_at_day: '2017-01-04T00:00:00.000Z', visitors__running_revenue_per_count: '150' }, - { visitors__created_at_day: '2017-01-05T00:00:00.000Z', visitors__running_revenue_per_count: '200' }, - { visitors__created_at_day: '2017-01-06T00:00:00.000Z', visitors__running_revenue_per_count: '300' }, - { visitors__created_at_day: '2017-01-07T00:00:00.000Z', visitors__running_revenue_per_count: '300' }, - { visitors__created_at_day: '2017-01-08T00:00:00.000Z', visitors__running_revenue_per_count: '300' }, - { visitors__created_at_day: '2017-01-09T00:00:00.000Z', visitors__running_revenue_per_count: '300' }, - { visitors__created_at_day: '2017-01-10T00:00:00.000Z', visitors__running_revenue_per_count: '300' } - ])); - // FAILS ClickHouse supports multiple approximate aggregators: // uniq, uniqCombined, uniqHLL12, need to pick one to use and implement it in query it.skip('hll rolling', () => { diff --git a/packages/cubejs-schema-compiler/test/integration/mssql/mssql-ungrouped.test.ts b/packages/cubejs-schema-compiler/test/integration/mssql/mssql-ungrouped.test.ts index 91ff98251519a..94feac38d3384 100644 --- a/packages/cubejs-schema-compiler/test/integration/mssql/mssql-ungrouped.test.ts +++ b/packages/cubejs-schema-compiler/test/integration/mssql/mssql-ungrouped.test.ts @@ -44,10 +44,6 @@ describe('MSSqlUngrouped', () => { }] }, per_visitor_revenue: perVisitorRevenueMeasure, - revenueRunning: { - type: 'runningTotal', - sql: 'amount' - }, revenueRolling: { type: 'sum', sql: 'amount', @@ -79,14 +75,6 @@ describe('MSSqlUngrouped', () => { offset: 'start' } }, - runningCount: { - type: 'runningTotal', - sql: '1' - }, - runningRevenuePerCount: { - type: 'number', - sql: \`round(\${revenueRunning} / \${runningCount})\` - }, averageCheckins: { type: 'avg', sql: \`\${doubledCheckings}\` diff --git a/packages/cubejs-schema-compiler/test/integration/postgres/sql-generation-logic.test.ts b/packages/cubejs-schema-compiler/test/integration/postgres/sql-generation-logic.test.ts index 6b608e3599ae5..0e74733c1912e 100644 --- a/packages/cubejs-schema-compiler/test/integration/postgres/sql-generation-logic.test.ts +++ b/packages/cubejs-schema-compiler/test/integration/postgres/sql-generation-logic.test.ts @@ -46,10 +46,6 @@ describe('SQL Generation', () => { }] }, per_visitor_revenue: perVisitorRevenueMeasure, - revenueRunning: { - type: 'runningTotal', - sql: 'amount' - }, revenueRolling: { type: 'sum', sql: 'amount', @@ -81,14 +77,6 @@ describe('SQL Generation', () => { offset: 'start' } }, - runningCount: { - type: 'runningTotal', - sql: '1' - }, - runningRevenuePerCount: { - type: 'number', - sql: \`round(\${revenueRunning} / \${runningCount})\` - }, averageCheckins: { type: 'avg', sql: \`\${doubledCheckings}\` diff --git a/packages/cubejs-schema-compiler/test/integration/postgres/sql-generation.test.ts b/packages/cubejs-schema-compiler/test/integration/postgres/sql-generation.test.ts index 1d30c5b4fd831..64d0cfb729e93 100644 --- a/packages/cubejs-schema-compiler/test/integration/postgres/sql-generation.test.ts +++ b/packages/cubejs-schema-compiler/test/integration/postgres/sql-generation.test.ts @@ -97,10 +97,6 @@ describe('SQL Generation', () => { }] }, per_visitor_revenue: perVisitorRevenueMeasure, - revenueRunning: { - type: 'runningTotal', - sql: 'amount' - }, revenueRolling: { type: 'sum', sql: 'amount', @@ -227,14 +223,6 @@ describe('SQL Generation', () => { offset: 'start' } }, - runningCount: { - type: 'runningTotal', - sql: '1' - }, - runningRevenuePerCount: { - type: 'number', - sql: \`round(\${revenueRunning} / \${runningCount})\` - }, averageCheckins: { type: 'avg', sql: \`\${doubledCheckings}\` @@ -1117,65 +1105,6 @@ SELECT 1 AS revenue, cast('2024-01-01' AS timestamp) as time UNION ALL } ])); - it('running total', async () => { - await compiler.compile(); - - const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { - measures: [ - 'visitors.revenueRunning' - ], - timeDimensions: [{ - dimension: 'visitors.created_at', - granularity: 'day', - dateRange: ['2017-01-01', '2017-01-10'] - }], - order: [{ - id: 'visitors.created_at' - }], - timezone: 'America/Los_Angeles' - }); - - console.log(query.buildSqlAndParams()); - - // TODO ordering doesn't work for running total - return dbRunner.testQuery(query.buildSqlAndParams()).then(res => { - console.log(JSON.stringify(res)); - expect(res).toEqual( - [{ - visitors__created_at_day: '2017-01-01T00:00:00.000Z', - visitors__revenue_running: null - }, { - visitors__created_at_day: '2017-01-02T00:00:00.000Z', - visitors__revenue_running: '100' - }, { - visitors__created_at_day: '2017-01-03T00:00:00.000Z', - visitors__revenue_running: '100' - }, { - visitors__created_at_day: '2017-01-04T00:00:00.000Z', - visitors__revenue_running: '300' - }, { - visitors__created_at_day: '2017-01-05T00:00:00.000Z', - visitors__revenue_running: '600' - }, { - visitors__created_at_day: '2017-01-06T00:00:00.000Z', - visitors__revenue_running: '1500' - }, { - visitors__created_at_day: '2017-01-07T00:00:00.000Z', - visitors__revenue_running: '1500' - }, { - visitors__created_at_day: '2017-01-08T00:00:00.000Z', - visitors__revenue_running: '1500' - }, { - visitors__created_at_day: '2017-01-09T00:00:00.000Z', - visitors__revenue_running: '1500' - }, { - visitors__created_at_day: '2017-01-10T00:00:00.000Z', - visitors__revenue_running: '1500' - }] - ); - }); - }); - it('rolling', async () => runQueryTest({ measures: [ 'visitors.revenueRolling' @@ -2333,50 +2262,6 @@ SELECT 1 AS revenue, cast('2024-01-01' AS timestamp) as time UNION ALL { visitors__created_at_sql_utils_day: '2017-01-06T00:00:00.000Z', visitors__visitor_count: '2' } ])); - it('running total total', async () => runQueryTest({ - measures: [ - 'visitors.revenueRunning' - ], - timeDimensions: [{ - dimension: 'visitors.created_at', - dateRange: ['2017-01-01', '2017-01-10'] - }], - order: [{ - id: 'visitors.created_at' - }], - timezone: 'America/Los_Angeles' - }, [ - { - visitors__revenue_running: '1500' - } - ])); - - it('running total ratio', async () => runQueryTest({ - measures: [ - 'visitors.runningRevenuePerCount' - ], - timeDimensions: [{ - dimension: 'visitors.created_at', - granularity: 'day', - dateRange: ['2017-01-01', '2017-01-10'] - }], - order: [{ - id: 'visitors.created_at' - }], - timezone: 'America/Los_Angeles' - }, [ - { visitors__created_at_day: '2017-01-01T00:00:00.000Z', visitors__running_revenue_per_count: null }, - { visitors__created_at_day: '2017-01-02T00:00:00.000Z', visitors__running_revenue_per_count: '100' }, - { visitors__created_at_day: '2017-01-03T00:00:00.000Z', visitors__running_revenue_per_count: '100' }, - { visitors__created_at_day: '2017-01-04T00:00:00.000Z', visitors__running_revenue_per_count: '150' }, - { visitors__created_at_day: '2017-01-05T00:00:00.000Z', visitors__running_revenue_per_count: '200' }, - { visitors__created_at_day: '2017-01-06T00:00:00.000Z', visitors__running_revenue_per_count: '300' }, - { visitors__created_at_day: '2017-01-07T00:00:00.000Z', visitors__running_revenue_per_count: '300' }, - { visitors__created_at_day: '2017-01-08T00:00:00.000Z', visitors__running_revenue_per_count: '300' }, - { visitors__created_at_day: '2017-01-09T00:00:00.000Z', visitors__running_revenue_per_count: '300' }, - { visitors__created_at_day: '2017-01-10T00:00:00.000Z', visitors__running_revenue_per_count: '300' } - ])); - it('hll rolling (BigQuery)', async () => { await compiler.compile(); diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/logical_plan/multistage/rolling_window.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/logical_plan/multistage/rolling_window.rs index 613b52fb5a5d1..d76993892802a 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/logical_plan/multistage/rolling_window.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/logical_plan/multistage/rolling_window.rs @@ -45,11 +45,10 @@ impl PrettyPrint for MultiStageToDateRollingWindow { } /// Flavour of rolling-window calculation: regular trailing/leading -/// window, `to_date` window, or a running-total accumulation. +/// window or a `to_date` window. pub enum MultiStageRollingWindowType { Regular(MultiStageRegularRollingWindow), ToDate(MultiStageToDateRollingWindow), - RunningTotal, } impl PrettyPrint for MultiStageRollingWindowType { @@ -57,9 +56,6 @@ impl PrettyPrint for MultiStageRollingWindowType { match self { MultiStageRollingWindowType::Regular(window) => window.pretty_print(result, state), MultiStageRollingWindowType::ToDate(window) => window.pretty_print(result, state), - MultiStageRollingWindowType::RunningTotal => { - result.println("Running Total Rolling Window", state) - } } } } diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/join.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/join.rs index ff45fa4e0b641..b97fb8d68cfe3 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/join.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/join.rs @@ -91,34 +91,6 @@ impl RegularRollingWindowJoinCondition { } } -#[derive(Clone)] -pub struct RollingTotalJoinCondition { - time_series_source: String, - time_dimension: Expr, -} - -impl RollingTotalJoinCondition { - pub fn new(time_series_source: String, time_dimension: Expr) -> Self { - Self { - time_series_source, - time_dimension, - } - } - - pub fn to_sql( - &self, - templates: &PlanSqlTemplates, - context: Rc, - ) -> Result { - let date_column = self.time_dimension.to_sql(templates, context)?; - let date_to = - templates.column_reference(&Some(self.time_series_source.clone()), "date_to")?; - let date_to = templates.rolling_window_expr_timestamp_cast(&date_to)?; - let result = format!("{date_column} <= {date_to}"); - Ok(result) - } -} - #[derive(Clone)] pub struct ToDateRollingWindowJoinCondition { time_series_source: String, @@ -223,7 +195,6 @@ pub enum JoinCondition { BaseJoinCondition(Rc), RegularRollingWindowJoinCondition(RegularRollingWindowJoinCondition), ToDateRollingWindowJoinCondition(ToDateRollingWindowJoinCondition), - RollingTotalJoinCondition(RollingTotalJoinCondition), } impl JoinCondition { @@ -261,13 +232,6 @@ impl JoinCondition { )) } - pub fn new_rolling_total_join(time_series_source: String, time_dimension: Expr) -> Self { - Self::RollingTotalJoinCondition(RollingTotalJoinCondition::new( - time_series_source, - time_dimension, - )) - } - pub fn new_base_join(base: Rc) -> Self { Self::BaseJoinCondition(base) } @@ -286,7 +250,6 @@ impl JoinCondition { JoinCondition::ToDateRollingWindowJoinCondition(cond) => { cond.to_sql(templates, context) } - JoinCondition::RollingTotalJoinCondition(cond) => cond.to_sql(templates, context), } } } diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/mod.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/mod.rs index 592efaa12d1bc..9d7c0cfee21bd 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/mod.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/mod.rs @@ -24,9 +24,7 @@ pub use cte::Cte; pub use cube_ref_evaluator::CubeRefEvaluator; pub use expression::{Expr, MemberExpression}; pub use from::{From, FromSource, SingleAliasedSource, SingleSource}; -pub use join::{ - Join, JoinCondition, JoinItem, RegularRollingWindowJoinCondition, RollingTotalJoinCondition, -}; +pub use join::{Join, JoinCondition, JoinItem, RegularRollingWindowJoinCondition}; pub use order::OrderBy; pub use query_plan::QueryPlan; pub use references_builder::ReferencesBuilder; diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/sql_nodes/rolling_window.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/sql_nodes/rolling_window.rs index 77bea9c59666c..7ad5e6ed2173d 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/sql_nodes/rolling_window.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan/sql_nodes/rolling_window.rs @@ -65,7 +65,7 @@ impl SqlNode for RollingWindowNode { AggregationType::CountDistinctApprox => { templates.hll_cardinality_merge(render_input()?)? } - AggregationType::Sum | AggregationType::RunningTotal => { + AggregationType::Sum => { format!("sum({})", render_input()?) } AggregationType::Min | AggregationType::Max => { diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/multi_stage_rolling_window.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/multi_stage_rolling_window.rs index bfbbb30d139ef..d34a89a2246e0 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/multi_stage_rolling_window.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/physical_plan_builder/processors/multi_stage_rolling_window.rs @@ -72,13 +72,6 @@ impl<'a> LogicalNodeProcessor<'a, MultiStageRollingWindow> query_tools.clone(), ) } - MultiStageRollingWindowType::RunningTotal => JoinCondition::new_rolling_total_join( - root_alias.clone(), - Expr::Reference(QualifiedColumnName::new( - Some(measure_input_alias.clone()), - base_time_dimension_alias, - )), - ), }; join_builder.left_join_table_reference( diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member.rs index 9a429eecdc96b..044a33a07d2f7 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member.rs @@ -37,12 +37,11 @@ pub struct ToDateRollingWindow { } /// Flavour of rolling-window computation: regular trailing/leading -/// window, to-date window, or a running-total accumulation. +/// window or a to-date window. #[derive(Clone)] pub enum RollingWindowType { Regular(RegularRollingWindow), ToDate(ToDateRollingWindow), - RunningTotal, } /// Planner-side description of a rolling window: the time @@ -86,17 +85,6 @@ impl RollingWindowDescription { rolling_window: RollingWindowType::ToDate(ToDateRollingWindow { granularity }), } } - - pub fn new_running_total( - time_dimension: Rc, - base_time_dimension: Rc, - ) -> Self { - Self { - time_dimension, - base_time_dimension, - rolling_window: RollingWindowType::RunningTotal, - } - } } /// Semantic shape of a non-leaf multi-stage CTE: a rank window, diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member_query_planner.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member_query_planner.rs index 0a3e162909e66..cbaee96b768b0 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member_query_planner.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member_query_planner.rs @@ -168,7 +168,6 @@ impl MultiStageMemberQueryPlanner { granularity_obj: Rc::new(granularity_obj), }) } - RollingWindowType::RunningTotal => MultiStageRollingWindowType::RunningTotal, }; let schema = LogicalSchema::default() diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/multi_stage_query_planner.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/multi_stage_query_planner.rs index ded41d095ab1a..369fabebc9565 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/multi_stage_query_planner.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/multi_stage_query_planner.rs @@ -767,9 +767,7 @@ impl MultiStageQueryPlanner { let alias = scope.next_cte_name(); - let rolling_window_descr = if measure.is_running_total() { - RollingWindowDescription::new_running_total(time_dimension, base_time_dimension) - } else if let Some(granularity) = + let rolling_window_descr = if let Some(granularity) = self.get_to_date_rolling_granularity(&rolling_window)? { RollingWindowDescription::new_to_date( diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/common/aggregation_type.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/common/aggregation_type.rs index c482de005862f..e78d5c68dc941 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/common/aggregation_type.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/common/aggregation_type.rs @@ -11,7 +11,6 @@ pub enum AggregationType { CountDistinct, CountDistinctApprox, NumberAgg, - RunningTotal, } impl AggregationType { @@ -24,7 +23,6 @@ impl AggregationType { "countDistinct" | "count_distinct" => Ok(Self::CountDistinct), "countDistinctApprox" | "count_distinct_approx" => Ok(Self::CountDistinctApprox), "numberAgg" | "number_agg" => Ok(Self::NumberAgg), - "runningTotal" | "running_total" => Ok(Self::RunningTotal), other => Err(CubeError::user(format!( "Unknown aggregation type: '{}'", other @@ -35,7 +33,7 @@ impl AggregationType { pub fn is_additive(&self) -> bool { matches!( self, - Self::Sum | Self::Min | Self::Max | Self::CountDistinctApprox | Self::RunningTotal + Self::Sum | Self::Min | Self::Max | Self::CountDistinctApprox ) } @@ -52,7 +50,6 @@ impl AggregationType { Self::CountDistinct => "countDistinct", Self::CountDistinctApprox => "countDistinctApprox", Self::NumberAgg => "numberAgg", - Self::RunningTotal => "runningTotal", } } } @@ -99,10 +96,6 @@ mod tests { AggregationType::from_str("numberAgg").unwrap(), AggregationType::NumberAgg ); - assert_eq!( - AggregationType::from_str("runningTotal").unwrap(), - AggregationType::RunningTotal - ); } #[test] @@ -119,10 +112,6 @@ mod tests { AggregationType::from_str("number_agg").unwrap(), AggregationType::NumberAgg ); - assert_eq!( - AggregationType::from_str("running_total").unwrap(), - AggregationType::RunningTotal - ); } #[test] @@ -134,7 +123,6 @@ mod tests { assert!(!AggregationType::CountDistinct.is_additive()); assert!(AggregationType::CountDistinctApprox.is_additive()); assert!(!AggregationType::NumberAgg.is_additive()); - assert!(AggregationType::RunningTotal.is_additive()); } #[test] @@ -146,7 +134,6 @@ mod tests { assert!(!AggregationType::Min.is_distinct()); assert!(!AggregationType::Max.is_distinct()); assert!(!AggregationType::NumberAgg.is_distinct()); - assert!(!AggregationType::RunningTotal.is_distinct()); } #[test] @@ -159,7 +146,6 @@ mod tests { AggregationType::CountDistinct, AggregationType::CountDistinctApprox, AggregationType::NumberAgg, - AggregationType::RunningTotal, ]; for v in &variants { let s = v.as_str(); diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/measure_kinds/mod.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/measure_kinds/mod.rs index a16fb633c8175..5ec4591d53c99 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/measure_kinds/mod.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/measure_kinds/mod.rs @@ -28,8 +28,7 @@ pub enum AggregateWrap<'a> { /// - `Count` — `type: count`. Counts rows; falls back to the cube's /// primary keys when no explicit `sql` is given. /// - `Aggregated` — built-in aggregation (`sum`, `avg`, `min`, `max`, -/// `count_distinct`, `count_distinct_approx`, `number_agg`, -/// `running_total`). +/// `count_distinct`, `count_distinct_approx`, `number_agg`). /// - `Calculated` — `type: number / string / time / boolean`. A /// plain expression with no aggregation wrapper. /// - `Rank` — `type: rank`. Window-function rank, no `sql`. @@ -180,7 +179,7 @@ impl MeasureKind { /// True if extra `measure_filters` can be merged into the kind. /// Counts and the basic aggregations support it; `number_agg`, - /// `running_total`, calculated and rank measures do not. + /// calculated and rank measures do not. pub fn supports_additional_filters(&self) -> bool { match self { Self::Count(_) | Self::MultipliedCount(_) => true, @@ -219,7 +218,6 @@ impl MeasureKind { AggregationType::NumberAgg => AggregateWrap::PassThrough, AggregationType::CountDistinctApprox => AggregateWrap::CountDistinctApprox, AggregationType::CountDistinct => AggregateWrap::CountDistinct, - AggregationType::RunningTotal => AggregateWrap::Function("sum"), _ => AggregateWrap::Function(a.agg_type().as_str()), }, Self::Count(_) => AggregateWrap::Function("count"), diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/measure_symbol.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/measure_symbol.rs index bafb42701de38..f12c0277f0030 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/measure_symbol.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/symbols/measure_symbol.rs @@ -1,4 +1,4 @@ -use super::common::{AggregationType, Case, CompiledMemberPath, MultiStageProperties}; +use super::common::{Case, CompiledMemberPath, MultiStageProperties}; use super::measure_kinds::{CalculatedMeasure, CalculatedMeasureType, MeasureKind}; use super::SymbolPath; use super::{MemberSymbol, SymbolFactory}; @@ -450,14 +450,9 @@ impl MeasureSymbol { self.rolling_window().is_some() } - pub fn is_running_total(&self) -> bool { - matches!(&self.kind, MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::RunningTotal) - } - - /// True for rolling-window measures and running-total - /// aggregations. + /// True for rolling-window measures. pub fn is_cumulative(&self) -> bool { - self.is_rolling_window() || self.is_running_total() + self.is_rolling_window() } pub fn measure_filters(&self) -> &Vec> { diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_rolling_window.yaml b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_rolling_window.yaml index fdfc7eb035cbb..b58a4c43a3208 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_rolling_window.yaml +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_rolling_window.yaml @@ -201,10 +201,6 @@ cubes: rolling_window: leading: unbounded offset: end - # Cat 15 — running total - - name: running_total - type: runningTotal - sql: amount # Cat 16 — count distinct - name: unique_customers type: count_distinct diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/measure_kind_tests.yaml b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/measure_kind_tests.yaml index 2fba7d430b418..c2fc615f6d83b 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/measure_kind_tests.yaml +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/measure_kind_tests.yaml @@ -33,9 +33,6 @@ cubes: - name: approx_count type: countDistinctApprox sql: user_id - - name: running - type: runningTotal - sql: amount - name: number_agg type: numberAgg sql: amount diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/db_time_series.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/db_time_series.rs index 5673a077d6858..0a575a4cf99ef 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/db_time_series.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/db_time_series.rs @@ -151,25 +151,3 @@ async fn test_db_ts_multiple_rolling() { insta::assert_snapshot!(result); } } - -#[tokio::test(flavor = "multi_thread")] -async fn test_db_ts_running_total() { - let ctx = create_context(); - - let query = indoc! {r#" - measures: - - orders.running_total - time_dimensions: - - dimension: orders.created_at - granularity: day - dateRange: - - "2024-01-10" - - "2024-01-20" - "#}; - - ctx.build_sql(query).unwrap(); - - if let Some(result) = ctx.try_execute_pg(query, SEED).await { - insta::assert_snapshot!(result); - } -} diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/mod.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/mod.rs index ef75a0ec268ac..ed986ca0b3294 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/mod.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/mod.rs @@ -12,7 +12,6 @@ mod multiple_rolling; mod offset_no_granularity; mod offset_variations; mod order_and_limit; -mod running_total; mod time_dimension_variations; mod timezone; mod to_date_variations; diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/running_total.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/running_total.rs deleted file mode 100644 index 1511155a8dfc2..0000000000000 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/running_total.rs +++ /dev/null @@ -1,152 +0,0 @@ -use crate::test_fixtures::cube_bridge::MockSchema; -use crate::test_fixtures::test_utils::TestContext; -use indoc::indoc; - -fn create_context() -> TestContext { - let schema = MockSchema::from_yaml_file("common/integration_rolling_window.yaml"); - TestContext::new(schema).unwrap() -} - -const SEED: &str = "integration_rolling_window_tables.sql"; - -#[tokio::test(flavor = "multi_thread")] -async fn test_running_total_no_granularity() { - let ctx = create_context(); - - let query = indoc! {r#" - measures: - - orders.running_total - time_dimensions: - - dimension: orders.created_at - dateRange: - - "2024-01-10" - - "2024-01-25" - "#}; - - ctx.build_sql(query).unwrap(); - - if let Some(result) = ctx.try_execute_pg(query, SEED).await { - insta::assert_snapshot!(result); - } -} - -#[tokio::test(flavor = "multi_thread")] -async fn test_running_total_with_day_granularity() { - let ctx = create_context(); - - let query = indoc! {r#" - measures: - - orders.running_total - time_dimensions: - - dimension: orders.created_at - granularity: day - dateRange: - - "2024-01-10" - - "2024-01-25" - "#}; - - ctx.build_sql(query).unwrap(); - - if let Some(result) = ctx.try_execute_pg(query, SEED).await { - insta::assert_snapshot!(result); - } -} - -#[tokio::test(flavor = "multi_thread")] -async fn test_running_total_with_dimension() { - let ctx = create_context(); - - let query = indoc! {r#" - measures: - - orders.running_total - dimensions: - - orders.status - time_dimensions: - - dimension: orders.created_at - granularity: day - dateRange: - - "2024-01-10" - - "2024-01-25" - order: - - id: orders.status - "#}; - - ctx.build_sql(query).unwrap(); - - if let Some(result) = ctx.try_execute_pg(query, SEED).await { - insta::assert_snapshot!(result); - } -} - -#[tokio::test(flavor = "multi_thread")] -async fn test_running_total_with_filter() { - let ctx = create_context(); - - let query = indoc! {r#" - measures: - - orders.running_total - time_dimensions: - - dimension: orders.created_at - granularity: day - dateRange: - - "2024-01-10" - - "2024-01-25" - filters: - - dimension: orders.status - operator: equals - values: - - completed - "#}; - - ctx.build_sql(query).unwrap(); - - if let Some(result) = ctx.try_execute_pg(query, SEED).await { - insta::assert_snapshot!(result); - } -} - -#[tokio::test(flavor = "multi_thread")] -async fn test_running_total_and_rolling() { - let ctx = create_context(); - - let query = indoc! {r#" - measures: - - orders.running_total - - orders.rolling_sum_trailing_7d - time_dimensions: - - dimension: orders.created_at - granularity: day - dateRange: - - "2024-01-10" - - "2024-01-25" - "#}; - - ctx.build_sql(query).unwrap(); - - if let Some(result) = ctx.try_execute_pg(query, SEED).await { - insta::assert_snapshot!(result); - } -} - -#[tokio::test(flavor = "multi_thread")] -async fn test_running_total_and_regular_measure() { - let ctx = create_context(); - - let query = indoc! {r#" - measures: - - orders.running_total - - orders.total_amount - time_dimensions: - - dimension: orders.created_at - granularity: day - dateRange: - - "2024-01-10" - - "2024-01-25" - "#}; - - ctx.build_sql(query).unwrap(); - - if let Some(result) = ctx.try_execute_pg(query, SEED).await { - insta::assert_snapshot!(result); - } -} diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__db_time_series__db_ts_running_total.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__db_time_series__db_ts_running_total.snap deleted file mode 100644 index 05419c20f817f..0000000000000 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__db_time_series__db_ts_running_total.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: cubesqlplanner/src/tests/integration/rolling_window/db_time_series.rs -expression: result ---- -orders__created_at_day | orders__running_total ------------------------+---------------------- -2024-01-10 00:00:00 | 30.00 -2024-01-11 00:00:00 | 30.00 -2024-01-12 00:00:00 | 380.00 -2024-01-13 00:00:00 | 380.00 -2024-01-14 00:00:00 | 470.00 -2024-01-15 00:00:00 | 530.00 -2024-01-16 00:00:00 | 650.00 -2024-01-17 00:00:00 | 650.00 -2024-01-18 00:00:00 | 830.00 -2024-01-19 00:00:00 | 830.00 -2024-01-20 00:00:00 | 830.00 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_and_regular_measure.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_and_regular_measure.snap deleted file mode 100644 index 5d1a5a767df9b..0000000000000 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_and_regular_measure.snap +++ /dev/null @@ -1,22 +0,0 @@ ---- -source: cubesqlplanner/src/tests/integration/rolling_window/running_total.rs -expression: result ---- -orders__created_at_day | orders__running_total | orders__total_amount ------------------------+-----------------------+--------------------- -2024-01-10 00:00:00 | 30.00 | 30.00 -2024-01-11 00:00:00 | 30.00 | NULL -2024-01-12 00:00:00 | 380.00 | 350.00 -2024-01-13 00:00:00 | 380.00 | NULL -2024-01-14 00:00:00 | 470.00 | 90.00 -2024-01-15 00:00:00 | 530.00 | 60.00 -2024-01-16 00:00:00 | 650.00 | 120.00 -2024-01-17 00:00:00 | 650.00 | NULL -2024-01-18 00:00:00 | 830.00 | 180.00 -2024-01-19 00:00:00 | 830.00 | NULL -2024-01-20 00:00:00 | 830.00 | NULL -2024-01-21 00:00:00 | 830.00 | NULL -2024-01-22 00:00:00 | 830.00 | NULL -2024-01-23 00:00:00 | 830.00 | NULL -2024-01-24 00:00:00 | 830.00 | NULL -2024-01-25 00:00:00 | 1080.00 | 250.00 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_and_rolling.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_and_rolling.snap deleted file mode 100644 index defb7f5b94c97..0000000000000 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_and_rolling.snap +++ /dev/null @@ -1,22 +0,0 @@ ---- -source: cubesqlplanner/src/tests/integration/rolling_window/running_total.rs -expression: result ---- -orders__created_at_day | orders__running_total | orders__rolling_sum_trailing_7d ------------------------+-----------------------+-------------------------------- -2024-01-10 00:00:00 | 30.00 | 305.00 -2024-01-11 00:00:00 | 30.00 | 230.00 -2024-01-12 00:00:00 | 380.00 | 580.00 -2024-01-13 00:00:00 | 380.00 | 580.00 -2024-01-14 00:00:00 | 470.00 | 670.00 -2024-01-15 00:00:00 | 530.00 | 530.00 -2024-01-16 00:00:00 | 650.00 | 650.00 -2024-01-17 00:00:00 | 650.00 | 620.00 -2024-01-18 00:00:00 | 830.00 | 800.00 -2024-01-19 00:00:00 | 830.00 | 450.00 -2024-01-20 00:00:00 | 830.00 | 450.00 -2024-01-21 00:00:00 | 830.00 | 360.00 -2024-01-22 00:00:00 | 830.00 | 300.00 -2024-01-23 00:00:00 | 830.00 | 180.00 -2024-01-24 00:00:00 | 830.00 | 180.00 -2024-01-25 00:00:00 | 1080.00 | 250.00 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_no_granularity.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_no_granularity.snap deleted file mode 100644 index 99a7814a286da..0000000000000 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_no_granularity.snap +++ /dev/null @@ -1,7 +0,0 @@ ---- -source: cubesqlplanner/src/tests/integration/rolling_window/running_total.rs -expression: result ---- -orders__running_total ---------------------- -1080.00 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_day_granularity.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_day_granularity.snap deleted file mode 100644 index 1b0b44df84602..0000000000000 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_day_granularity.snap +++ /dev/null @@ -1,22 +0,0 @@ ---- -source: cubesqlplanner/src/tests/integration/rolling_window/running_total.rs -expression: result ---- -orders__created_at_day | orders__running_total ------------------------+---------------------- -2024-01-10 00:00:00 | 30.00 -2024-01-11 00:00:00 | 30.00 -2024-01-12 00:00:00 | 380.00 -2024-01-13 00:00:00 | 380.00 -2024-01-14 00:00:00 | 470.00 -2024-01-15 00:00:00 | 530.00 -2024-01-16 00:00:00 | 650.00 -2024-01-17 00:00:00 | 650.00 -2024-01-18 00:00:00 | 830.00 -2024-01-19 00:00:00 | 830.00 -2024-01-20 00:00:00 | 830.00 -2024-01-21 00:00:00 | 830.00 -2024-01-22 00:00:00 | 830.00 -2024-01-23 00:00:00 | 830.00 -2024-01-24 00:00:00 | 830.00 -2024-01-25 00:00:00 | 1080.00 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_dimension.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_dimension.snap deleted file mode 100644 index 4e015591f72e0..0000000000000 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_dimension.snap +++ /dev/null @@ -1,44 +0,0 @@ ---- -source: cubesqlplanner/src/tests/integration/rolling_window/running_total.rs -expression: result ---- -orders__status | orders__created_at_day | orders__running_total ----------------+------------------------+---------------------- -cancelled | 2024-01-16 00:00:00 | 120.00 -cancelled | 2024-01-17 00:00:00 | 120.00 -cancelled | 2024-01-18 00:00:00 | 120.00 -cancelled | 2024-01-19 00:00:00 | 120.00 -cancelled | 2024-01-20 00:00:00 | 120.00 -cancelled | 2024-01-21 00:00:00 | 120.00 -cancelled | 2024-01-22 00:00:00 | 120.00 -cancelled | 2024-01-23 00:00:00 | 120.00 -cancelled | 2024-01-24 00:00:00 | 120.00 -cancelled | 2024-01-25 00:00:00 | 120.00 -completed | 2024-01-10 00:00:00 | 30.00 -completed | 2024-01-11 00:00:00 | 30.00 -completed | 2024-01-12 00:00:00 | 380.00 -completed | 2024-01-13 00:00:00 | 380.00 -completed | 2024-01-14 00:00:00 | 380.00 -completed | 2024-01-15 00:00:00 | 440.00 -completed | 2024-01-16 00:00:00 | 440.00 -completed | 2024-01-17 00:00:00 | 440.00 -completed | 2024-01-18 00:00:00 | 620.00 -completed | 2024-01-19 00:00:00 | 620.00 -completed | 2024-01-20 00:00:00 | 620.00 -completed | 2024-01-21 00:00:00 | 620.00 -completed | 2024-01-22 00:00:00 | 620.00 -completed | 2024-01-23 00:00:00 | 620.00 -completed | 2024-01-24 00:00:00 | 620.00 -completed | 2024-01-25 00:00:00 | 870.00 -pending | 2024-01-14 00:00:00 | 90.00 -pending | 2024-01-15 00:00:00 | 90.00 -pending | 2024-01-16 00:00:00 | 90.00 -pending | 2024-01-17 00:00:00 | 90.00 -pending | 2024-01-18 00:00:00 | 90.00 -pending | 2024-01-19 00:00:00 | 90.00 -pending | 2024-01-20 00:00:00 | 90.00 -pending | 2024-01-21 00:00:00 | 90.00 -pending | 2024-01-22 00:00:00 | 90.00 -pending | 2024-01-23 00:00:00 | 90.00 -pending | 2024-01-24 00:00:00 | 90.00 -pending | 2024-01-25 00:00:00 | 90.00 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_filter.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_filter.snap deleted file mode 100644 index d8a6cd41e95c1..0000000000000 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/rolling_window/snapshots/cubesqlplanner__tests__integration__rolling_window__running_total__running_total_with_filter.snap +++ /dev/null @@ -1,22 +0,0 @@ ---- -source: cubesqlplanner/src/tests/integration/rolling_window/running_total.rs -expression: result ---- -orders__created_at_day | orders__running_total ------------------------+---------------------- -2024-01-10 00:00:00 | 30.00 -2024-01-11 00:00:00 | 30.00 -2024-01-12 00:00:00 | 380.00 -2024-01-13 00:00:00 | 380.00 -2024-01-14 00:00:00 | 380.00 -2024-01-15 00:00:00 | 440.00 -2024-01-16 00:00:00 | 440.00 -2024-01-17 00:00:00 | 440.00 -2024-01-18 00:00:00 | 620.00 -2024-01-19 00:00:00 | 620.00 -2024-01-20 00:00:00 | 620.00 -2024-01-21 00:00:00 | 620.00 -2024-01-22 00:00:00 | 620.00 -2024-01-23 00:00:00 | 620.00 -2024-01-24 00:00:00 | 620.00 -2024-01-25 00:00:00 | 870.00 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/measure_symbol.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/measure_symbol.rs index c390cc4fb8fd2..1de8d4d2869d8 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/measure_symbol.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/measure_symbol.rs @@ -25,7 +25,6 @@ fn measure_count_properties() { assert!(matches!(measure.kind(), MeasureKind::Count(_))); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_rolling_window()); assert!(!measure.is_cumulative()); assert!(measure.is_additive()); @@ -42,7 +41,6 @@ fn measure_sum_properties() { MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::Sum )); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_rolling_window()); assert!(!measure.is_cumulative()); assert!(measure.is_additive()); @@ -59,7 +57,6 @@ fn measure_avg_properties() { MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::Avg )); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_cumulative()); assert!(!measure.is_additive()); } @@ -75,7 +72,6 @@ fn measure_min_properties() { MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::Min )); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_cumulative()); assert!(measure.is_additive()); } @@ -91,7 +87,6 @@ fn measure_max_properties() { MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::Max )); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_cumulative()); assert!(measure.is_additive()); } @@ -107,7 +102,6 @@ fn measure_count_distinct_properties() { MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::CountDistinct )); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_cumulative()); assert!(!measure.is_additive()); } @@ -123,28 +117,10 @@ fn measure_count_distinct_approx_properties() { MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::CountDistinctApprox )); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_cumulative()); assert!(measure.is_additive()); } -#[test] -fn measure_running_total_properties() { - let ctx = ctx(); - let m = ctx.create_measure("test_measures.running").unwrap(); - let measure = m.as_measure().unwrap(); - - assert!(matches!( - measure.kind(), - MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::RunningTotal - )); - assert!(!measure.is_calculated()); - assert!(measure.is_running_total()); - assert!(!measure.is_rolling_window()); - assert!(measure.is_cumulative()); - assert!(measure.is_additive()); -} - #[test] fn measure_number_agg_properties() { let ctx = ctx(); @@ -156,7 +132,6 @@ fn measure_number_agg_properties() { MeasureKind::Aggregated(a) if a.agg_type() == AggregationType::NumberAgg )); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_cumulative()); assert!(!measure.is_additive()); } @@ -172,7 +147,6 @@ fn measure_calculated_number_properties() { MeasureKind::Calculated(c) if c.calc_type() == CalculatedMeasureType::Number )); assert!(measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_cumulative()); assert!(!measure.is_additive()); } @@ -185,7 +159,6 @@ fn measure_rank_properties() { assert!(matches!(measure.kind(), MeasureKind::Rank)); assert!(!measure.is_calculated()); - assert!(!measure.is_running_total()); assert!(!measure.is_cumulative()); assert!(!measure.is_additive()); } @@ -202,7 +175,6 @@ fn measure_rolling_window_properties() { )); assert!(measure.is_rolling_window()); assert!(measure.is_cumulative()); - assert!(!measure.is_running_total()); } // ─── new_patched: valid type replacements ─────────────────────────────────── @@ -287,7 +259,7 @@ fn new_patched_sum_invalid_targets() { let m = ctx.create_measure("test_measures.total").unwrap(); let measure = m.as_measure().unwrap(); - for invalid in ["number", "count", "runningTotal", "rank", "numberAgg"] { + for invalid in ["number", "count", "rank", "numberAgg"] { assert!( measure .new_patched(Some(invalid.to_string()), vec![]) @@ -317,7 +289,6 @@ fn new_patched_non_patchable_types() { "test_measures.cnt", "test_measures.calculated", "test_measures.rank_measure", - "test_measures.running", ]; for path in non_patchable { let m = ctx.create_measure(path).unwrap(); @@ -417,7 +388,6 @@ fn new_patched_filters_rejected_for_non_aggregatable_types() { let reject_filters = [ "test_measures.calculated", - "test_measures.running", "test_measures.rank_measure", "test_measures.number_agg", ]; diff --git a/rust/cubesql/cubesql/src/transport/ext.rs b/rust/cubesql/cubesql/src/transport/ext.rs index 7502d6564dcc4..b27e897910a3e 100644 --- a/rust/cubesql/cubesql/src/transport/ext.rs +++ b/rust/cubesql/cubesql/src/transport/ext.rs @@ -116,7 +116,6 @@ impl V1CubeMetaMeasureExt for CubeMetaMeasure { "avg" => ColumnType::Double, "min" => ColumnType::Double, "max" => ColumnType::Double, - "runningTotal" => ColumnType::Double, _ => from_type, }, _ => from_type, From 44fee72ac84f630427e4a2038797fec20b8d018c Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Wed, 10 Jun 2026 12:09:58 +0200 Subject: [PATCH 03/24] feat!: Remove deprecated CUBEJS_SCHEDULED_REFRESH_CONCURRENCY env variable (#11048) BREAKING CHANGE: The CUBEJS_SCHEDULED_REFRESH_CONCURRENCY environment variable has been removed. It was deprecated in v1.2.7. Use CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID instead. --- DEPRECATION.md | 4 +++- .../configuration/environment-variables.mdx | 6 ------ .../reference/environment-variables.mdx | 6 ------ packages/cubejs-backend-shared/src/env.ts | 18 +----------------- 4 files changed, 4 insertions(+), 30 deletions(-) diff --git a/DEPRECATION.md b/DEPRECATION.md index 0e4900c0c9c08..9d18224818dc8 100644 --- a/DEPRECATION.md +++ b/DEPRECATION.md @@ -64,7 +64,7 @@ features: | Removed | [`initApp` hook](#initapp-hook) | v0.35.0 | v0.35.0 | | Removed | [`/v1/run-scheduled-refresh` REST API endpoint](#v1run-scheduled-refresh-rest-api-endpoint) | v0.35.0 | v0.36.0 | | Removed | [Node.js 18](#nodejs-18) | v0.36.0 | v1.3.0 | -| Deprecated | [`CUBEJS_SCHEDULED_REFRESH_CONCURRENCY`](#cubejs_scheduled_refresh_concurrency) | v1.2.7 | | +| Removed | [`CUBEJS_SCHEDULED_REFRESH_CONCURRENCY`](#cubejs_scheduled_refresh_concurrency) | v1.2.7 | v1.7.0 | | Deprecated | [Node.js 20](#nodejs-20) | v1.3.0 | | | Deprecated | [`renewQuery` parameter of the `/v1/load` endpoint](#renewquery-parameter-of-the-v1load-endpoint) | v1.3.73 | | | Removed | [Elasticsearch driver](#elasticsearch-driver) | v1.6.0 | v1.7.0 | @@ -403,6 +403,8 @@ no more updates. Please upgrade to Node.js 20 or higher. **Deprecated in Release: v1.2.7** +**Removed in Release: v1.7.0** + This environment variable was renamed to [`CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID`](https://cube.dev/docs/reference/configuration/environment-variables#cubejs_scheduled_refresh_queries_per_app_id). Please use the new name. ### Node.js 18 diff --git a/docs-mintlify/reference/configuration/environment-variables.mdx b/docs-mintlify/reference/configuration/environment-variables.mdx index 82a72ba574b36..34dcfdff490f7 100644 --- a/docs-mintlify/reference/configuration/environment-variables.mdx +++ b/docs-mintlify/reference/configuration/environment-variables.mdx @@ -154,12 +154,6 @@ it should be adjusted accordingly. | ------------------------------------ | ---------------------- | --------------------- | | A valid number of concurrent queries | 10 | 10 | - - -Previously, this environment variable was named `CUBEJS_SCHEDULED_REFRESH_CONCURRENCY`. - - - ## `CUBEJS_CUBESTORE_HOST` The hostname of the Cube Store deployment diff --git a/docs/content/product/configuration/reference/environment-variables.mdx b/docs/content/product/configuration/reference/environment-variables.mdx index 48282616bde8b..a11baf8c47e3d 100644 --- a/docs/content/product/configuration/reference/environment-variables.mdx +++ b/docs/content/product/configuration/reference/environment-variables.mdx @@ -151,12 +151,6 @@ it should be adjusted accordingly. | ------------------------------------ | ---------------------- | --------------------- | | A valid number of concurrent queries | 10 | 10 | - - -Previously, this environment variable was named CUBEJS_SCHEDULED_REFRESH_CONCURRENCY. - - - ## `CUBEJS_CUBESTORE_HOST` The hostname of the Cube Store deployment diff --git a/packages/cubejs-backend-shared/src/env.ts b/packages/cubejs-backend-shared/src/env.ts index 478419a58b753..b35c19fd04b5d 100644 --- a/packages/cubejs-backend-shared/src/env.ts +++ b/packages/cubejs-backend-shared/src/env.ts @@ -266,23 +266,7 @@ const variables: Record any> = { // It's true by default for development return process.env.NODE_ENV !== 'production'; }, - scheduledRefreshQueriesPerAppId: () => { - const refreshQueries = get('CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID').asIntPositive(); - - if (refreshQueries) { - return refreshQueries; - } - - const refreshConcurrency = get('CUBEJS_SCHEDULED_REFRESH_CONCURRENCY').asIntPositive(); - - if (refreshConcurrency) { - console.warn( - 'The CUBEJS_SCHEDULED_REFRESH_CONCURRENCY is deprecated. Please, use the CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID instead.' - ); - } - - return refreshConcurrency; - }, + scheduledRefreshQueriesPerAppId: () => get('CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID').asIntPositive(), refreshWorkerConcurrency: () => get('CUBEJS_REFRESH_WORKER_CONCURRENCY') .asIntPositive(), // eslint-disable-next-line consistent-return From c2b888885d6640c5a14ee49f1057fefdf703ead3 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 11 Jun 2026 18:29:03 +0200 Subject: [PATCH 04/24] feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) BREAKING CHANGE: The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. --- DEPRECATION.md | 8 +-- .../core-data-apis/graphql-api/reference.mdx | 1 - .../core-data-apis/rest-api/query-format.mdx | 19 ------- .../reference/cubejs-client-core.mdx | 1 - .../core-data-apis/graphql-api/reference.mdx | 1 - .../core-data-apis/rest-api/query-format.mdx | 21 -------- packages/cubejs-api-gateway/src/graphql.ts | 4 +- packages/cubejs-api-gateway/src/query.js | 9 ---- .../cubejs-api-gateway/src/types/query.ts | 2 - .../cubejs-api-gateway/src/types/request.ts | 1 - .../cubejs-backend-shared/src/shared-types.ts | 4 +- packages/cubejs-client-core/src/types.ts | 6 +-- packages/cubejs-client-dx/index.d.ts | 2 - .../cubejs-client-vue3/src/QueryBuilder.js | 9 ---- .../tests/unit/QueryBuilder.spec.js | 28 ---------- .../QueryBuilderV2/utils/validate-query.ts | 5 -- .../src/components/CachePane.tsx | 3 +- .../src/orchestrator/PreAggregations.ts | 4 +- .../src/orchestrator/QueryCache.ts | 7 +-- .../test/unit/PreAggregations.test.ts | 4 +- .../test/unit/QueryOrchestrator.test.js | 54 +++++++++---------- .../postgres/views-join-order-2.test.ts | 1 - .../cubeorchestrator/benches/transform.rs | 1 - .../src/query_result_transform.rs | 1 - rust/cube/cubeorchestrator/src/transport.rs | 2 - 25 files changed, 44 insertions(+), 154 deletions(-) diff --git a/DEPRECATION.md b/DEPRECATION.md index 9d18224818dc8..9cf128f27c8bc 100644 --- a/DEPRECATION.md +++ b/DEPRECATION.md @@ -66,7 +66,7 @@ features: | Removed | [Node.js 18](#nodejs-18) | v0.36.0 | v1.3.0 | | Removed | [`CUBEJS_SCHEDULED_REFRESH_CONCURRENCY`](#cubejs_scheduled_refresh_concurrency) | v1.2.7 | v1.7.0 | | Deprecated | [Node.js 20](#nodejs-20) | v1.3.0 | | -| Deprecated | [`renewQuery` parameter of the `/v1/load` endpoint](#renewquery-parameter-of-the-v1load-endpoint) | v1.3.73 | | +| Removed | [`renewQuery` parameter of the `/v1/load` endpoint](#renewquery-parameter-of-the-v1load-endpoint) | v1.3.73 | v1.7.0 | | Removed | [Elasticsearch driver](#elasticsearch-driver) | v1.6.0 | v1.7.0 | | Deprecated | [`context_to_roles`](#context-to-roles) | v1.6.4 | | @@ -424,8 +424,10 @@ no more new features, only security updates. Please upgrade to Node.js 22 or hig **Deprecated in Release: v1.3.73** -This parameter is deprecated and will be removed in future releases. See [cache control](https://cube.dev/docs/product/apis-integrations/rest-api#cache-control) -options and use the new `cache` parameter of the `/v1/load` endpoint instead. +**Removed in Release: v1.7.0** + +This parameter has been removed. See [cache control](https://cube.dev/docs/product/apis-integrations/rest-api#cache-control) +options and use the `cache` parameter of the `/v1/load` endpoint instead. ### Elasticsearch driver diff --git a/docs-mintlify/reference/core-data-apis/graphql-api/reference.mdx b/docs-mintlify/reference/core-data-apis/graphql-api/reference.mdx index 4dfa238678fc3..eba1746674fcb 100644 --- a/docs-mintlify/reference/core-data-apis/graphql-api/reference.mdx +++ b/docs-mintlify/reference/core-data-apis/graphql-api/reference.mdx @@ -40,7 +40,6 @@ object with query metadata: - **`timezone` (`String`):** The [time zone][ref-time-zone] for your query. You can set the desired time zone in the [TZ Database Name](https://en.wikipedia.org/wiki/Tz_database) format, e.g., `America/Los_Angeles`. -- **`renewQuery` (`Boolean`):** If `renewQuery` is set to `true`, Cube will renew all `refreshKey` for queries and query results in the foreground. The default value is `false`. - **`ungrouped` (`Boolean`):** If set to `true`, Cube will run an [ungrouped query][ref-ungrouped-query]. diff --git a/docs-mintlify/reference/core-data-apis/rest-api/query-format.mdx b/docs-mintlify/reference/core-data-apis/rest-api/query-format.mdx index 987211d938cd8..98e09ee27e031 100644 --- a/docs-mintlify/reference/core-data-apis/rest-api/query-format.mdx +++ b/docs-mintlify/reference/core-data-apis/rest-api/query-format.mdx @@ -45,23 +45,6 @@ The default value is `false`. - `timezone`: A [time zone][ref-time-zone] for your query. You can set the desired time zone in the [TZ Database Name](https://en.wikipedia.org/wiki/Tz_database) format, e.g., `America/Los_Angeles`. -- `renewQuery`: If `renewQuery` is set to `true`, Cube will renew all - [`refreshKey`][ref-schema-ref-preaggs-refreshkey] for queries and query - results in the foreground. However, if the - [`refreshKey`][ref-schema-ref-preaggs-refreshkey] (or - [`refreshKey.every`][ref-schema-ref-preaggs-refreshkey-every]) doesn't - indicate that there's a need for an update this setting has no effect. The - default value is `false`. - - - -Cube provides only eventual consistency guarantee. Using a small -[`refreshKey.every`][ref-schema-ref-preaggs-refreshkey-every] value together -with `renewQuery` to achieve immediate consistency can lead to endless -refresh loops and overall system instability. - - - - `ungrouped`: If set to `true`, Cube will run an [ungrouped query][ref-ungrouped-query]. - `joinHints`: Query-time [join hints][ref-join-hints], provided as an array of @@ -745,8 +728,6 @@ the array contains a single string. See [`inDateRange`](#indaterange) and [Date filters in logical operators](#date-filters-in-logical-operators). [ref-client-core-resultset-drilldown]: /reference/javascript-sdk/reference/cubejs-client-core#drilldown -[ref-schema-ref-preaggs-refreshkey]: /reference/data-modeling/pre-aggregations#refresh_key -[ref-schema-ref-preaggs-refreshkey-every]: /reference/data-modeling/pre-aggregations#every [ref-schema-ref-preaggs-dimensions]: /reference/data-modeling/pre-aggregations#dimensions [ref-schema-ref-preaggs-time-dimension]: /reference/data-modeling/pre-aggregations#time_dimension [ref-relative-date-range]: #relative-date-range diff --git a/docs-mintlify/reference/javascript-sdk/reference/cubejs-client-core.mdx b/docs-mintlify/reference/javascript-sdk/reference/cubejs-client-core.mdx index dd34fc532d727..ca8bd6bdce097 100644 --- a/docs-mintlify/reference/javascript-sdk/reference/cubejs-client-core.mdx +++ b/docs-mintlify/reference/javascript-sdk/reference/cubejs-client-core.mdx @@ -979,7 +979,6 @@ limit? | number | measures? | string[] | offset? | number | order? | [TQueryOrderObject](#tqueryorderobject) | [TQueryOrderArray](#tqueryorderarray) | -renewQuery? | boolean | segments? | string[] | timeDimensions? | [TimeDimension](#timedimension)[] | timezone? | string | diff --git a/docs/content/product/apis-integrations/core-data-apis/graphql-api/reference.mdx b/docs/content/product/apis-integrations/core-data-apis/graphql-api/reference.mdx index 66fc15c81ff9c..323317348f092 100644 --- a/docs/content/product/apis-integrations/core-data-apis/graphql-api/reference.mdx +++ b/docs/content/product/apis-integrations/core-data-apis/graphql-api/reference.mdx @@ -27,7 +27,6 @@ query { - **`timezone` (`String`):** The [time zone][ref-time-zone] for your query. You can set the desired time zone in the [TZ Database Name](https://en.wikipedia.org/wiki/Tz_database) format, e.g., `America/Los_Angeles`. -- **`renewQuery` (`Boolean`):** If `renewQuery` is set to `true`, Cube will renew all `refreshKey` for queries and query results in the foreground. The default value is `false`. - **`ungrouped` (`Boolean`):** If set to `true`, Cube will run an [ungrouped query][ref-ungrouped-query]. diff --git a/docs/content/product/apis-integrations/core-data-apis/rest-api/query-format.mdx b/docs/content/product/apis-integrations/core-data-apis/rest-api/query-format.mdx index 32405961d0d7c..712788ff3582f 100644 --- a/docs/content/product/apis-integrations/core-data-apis/rest-api/query-format.mdx +++ b/docs/content/product/apis-integrations/core-data-apis/rest-api/query-format.mdx @@ -42,23 +42,6 @@ The default value is `false`. - `timezone`: A [time zone][ref-time-zone] for your query. You can set the desired time zone in the [TZ Database Name](https://en.wikipedia.org/wiki/Tz_database) format, e.g., `America/Los_Angeles`. -- `renewQuery`: If `renewQuery` is set to `true`, Cube will renew all - [`refreshKey`][ref-schema-ref-preaggs-refreshkey] for queries and query - results in the foreground. However, if the - [`refreshKey`][ref-schema-ref-preaggs-refreshkey] (or - [`refreshKey.every`][ref-schema-ref-preaggs-refreshkey-every]) doesn't - indicate that there's a need for an update this setting has no effect. The - default value is `false`. - - - -Cube provides only eventual consistency guarantee. Using a small -[`refreshKey.every`][ref-schema-ref-preaggs-refreshkey-every] value together -with `renewQuery` to achieve immediate consistency can lead to endless -refresh loops and overall system instability. - - - - `ungrouped`: If set to `true`, Cube will run an [ungrouped query][ref-ungrouped-query]. - `joinHints`: Query-time [join hints][ref-join-hints], provided as an array of @@ -672,10 +655,6 @@ 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]: - /product/data-modeling/reference/pre-aggregations#refresh_key -[ref-schema-ref-preaggs-refreshkey-every]: - /product/data-modeling/reference/pre-aggregations#every [ref-schema-ref-preaggs-dimensions]: /product/data-modeling/reference/pre-aggregations#dimensions [ref-schema-ref-preaggs-time-dimension]: diff --git a/packages/cubejs-api-gateway/src/graphql.ts b/packages/cubejs-api-gateway/src/graphql.ts index b3a8d89fc714f..4a328d1cd6a02 100644 --- a/packages/cubejs-api-gateway/src/graphql.ts +++ b/packages/cubejs-api-gateway/src/graphql.ts @@ -363,7 +363,7 @@ function parseDates(result: any) { } export function getJsonQuery(metaConfig: any, args: Record, infos: GraphQLResolveInfo) { - const { where, limit, offset, timezone, orderBy, renewQuery, ungrouped, cache } = args; + const { where, limit, offset, timezone, orderBy, ungrouped, cache } = args; const measures: string[] = []; const dimensions: string[] = []; @@ -460,7 +460,6 @@ export function getJsonQuery(metaConfig: any, args: Record, infos: ...(offset && { offset }), ...(timezone && { timezone }), ...(filters.length && { filters }), - ...(renewQuery && { renewQuery }), ...(cache && { cache }), ...(ungrouped && { ungrouped }), }; @@ -639,7 +638,6 @@ export function makeSchema(metaConfig: any): GraphQLSchema { limit: intArg(), offset: intArg(), timezone: stringArg(), - renewQuery: booleanArg(), cache: stringArg(), ungrouped: booleanArg(), orderBy: arg({ diff --git a/packages/cubejs-api-gateway/src/query.js b/packages/cubejs-api-gateway/src/query.js index a3dda0f78837d..0407857f6b5d3 100644 --- a/packages/cubejs-api-gateway/src/query.js +++ b/packages/cubejs-api-gateway/src/query.js @@ -187,8 +187,6 @@ const querySchema = Joi.object().keys({ limit: Joi.number().integer().strict().min(0), offset: Joi.number().integer().strict().min(0), total: Joi.boolean(), - // @deprecated - renewQuery: Joi.boolean(), cacheMode: Joi.valid('stale-if-slow', 'stale-while-revalidate', 'must-revalidate', 'no-cache'), cache: Joi.valid('stale-if-slow', 'stale-while-revalidate', 'must-revalidate', 'no-cache'), ungrouped: Joi.boolean(), @@ -395,19 +393,12 @@ function parseInputMemberExpression(expression) { function normalizeQueryCacheMode(query, cacheMode) { if (cacheMode !== undefined) { query.cacheMode = cacheMode; - } else if (!query.cache && query?.renewQuery !== undefined) { - // TODO: Drop this when renewQuery will be removed - query.cacheMode = query.renewQuery === true - ? 'must-revalidate' - : 'stale-if-slow'; } else if (!query.cache) { query.cacheMode = 'stale-if-slow'; } else { query.cacheMode = query.cache; } - // TODO: Drop this when renewQuery will be removed - query.renewQuery = undefined; query.cache = undefined; return query; diff --git a/packages/cubejs-api-gateway/src/types/query.ts b/packages/cubejs-api-gateway/src/types/query.ts index 26b0e26e263da..7b42fd7c046d7 100644 --- a/packages/cubejs-api-gateway/src/types/query.ts +++ b/packages/cubejs-api-gateway/src/types/query.ts @@ -140,8 +140,6 @@ interface Query { totalQuery?: boolean; order?: any; timezone?: string; - // @deprecated - renewQuery?: boolean; cacheMode?: CacheMode; // used after query normalization cache?: CacheMode; // Used in public interface ungrouped?: boolean; diff --git a/packages/cubejs-api-gateway/src/types/request.ts b/packages/cubejs-api-gateway/src/types/request.ts index 8478d008354a2..9b78a1afda503 100644 --- a/packages/cubejs-api-gateway/src/types/request.ts +++ b/packages/cubejs-api-gateway/src/types/request.ts @@ -121,7 +121,6 @@ type BaseRequest = { }; type RequestQuery = Record | Record[] & { - renewQuery?: boolean; cacheMode?: CacheMode; }; diff --git a/packages/cubejs-backend-shared/src/shared-types.ts b/packages/cubejs-backend-shared/src/shared-types.ts index 52eb4fc09db74..9abcc1e2ab266 100644 --- a/packages/cubejs-backend-shared/src/shared-types.ts +++ b/packages/cubejs-backend-shared/src/shared-types.ts @@ -1,5 +1,5 @@ /* -stale-if-slow (default) — equivalent to previously used renewQuery: false +stale-if-slow (default) If refresh keys are up-to-date, returns the value from cache If refresh keys are expired, tries to return the value from the database Returns fresh value from the database if the query executed in the database until the first “Continue wait” interval is reached @@ -10,7 +10,7 @@ stale-while-revalidate — AKA “backgroundRefresh” If refresh keys are expired, returns stale data from cache Updates the cache in background -must-revalidate — equivalent to previously used renewQuery: true +must-revalidate If refresh keys are up-to-date, returns the value from cache If refresh keys are expired, tries to return the value from the database Returns fresh value from the database even if it takes minutes and many “Continue wait” intervals diff --git a/packages/cubejs-client-core/src/types.ts b/packages/cubejs-client-core/src/types.ts index c71cd05c93fe2..4a3ee92658c17 100644 --- a/packages/cubejs-client-core/src/types.ts +++ b/packages/cubejs-client-core/src/types.ts @@ -162,8 +162,6 @@ export interface Query { offset?: number; order?: TQueryOrderObject | TQueryOrderArray; timezone?: string; - // @deprecated - renewQuery?: boolean; ungrouped?: boolean; responseFormat?: 'compact' | 'columnar' | 'default'; total?: boolean; @@ -609,7 +607,7 @@ export type ProgressResponse = { /** * Cache mode options for query execution. * - * - **stale-if-slow** (default): Equivalent to previously used `renewQuery: false`. + * - **stale-if-slow** (default): * If refresh keys are up-to-date, returns the value from cache. * If refresh keys are expired, tries to return the value from the database. * Returns fresh value from the database if the query executed until the first "Continue wait" interval is reached. @@ -620,7 +618,7 @@ export type ProgressResponse = { * If refresh keys are expired, returns stale data from cache. * Updates the cache in background. * - * - **must-revalidate**: Equivalent to previously used `renewQuery: true`. + * - **must-revalidate**: * If refresh keys are up-to-date, returns the value from cache. * If refresh keys are expired, tries to return the value from the database. * Returns fresh value from the database even if it takes minutes and many "Continue wait" intervals. diff --git a/packages/cubejs-client-dx/index.d.ts b/packages/cubejs-client-dx/index.d.ts index c37dcb86385c0..9a43412d0549c 100644 --- a/packages/cubejs-client-dx/index.d.ts +++ b/packages/cubejs-client-dx/index.d.ts @@ -19,8 +19,6 @@ declare module "@cubejs-client/core" { offset?: number; order?: IntrospectedTQueryOrderObject | IntrospectedTQueryOrderArray; timezone?: string; - // @deprecated - renewQuery?: boolean; ungrouped?: boolean; } diff --git a/packages/cubejs-client-vue3/src/QueryBuilder.js b/packages/cubejs-client-vue3/src/QueryBuilder.js index eca777799cc82..26b19c04a97bf 100644 --- a/packages/cubejs-client-vue3/src/QueryBuilder.js +++ b/packages/cubejs-client-vue3/src/QueryBuilder.js @@ -120,7 +120,6 @@ export default { availableSegments: [], limit: null, offset: null, - renewQuery: false, order: null, prevValidatedQuery: null, granularities: GRANULARITIES, @@ -151,7 +150,6 @@ export default { removeLimit, setOffset, removeOffset, - renewQuery, order, orderMembers, } = this; @@ -180,7 +178,6 @@ export default { removeLimit, setOffset, removeOffset, - renewQuery, order, orderMembers, setOrder: this.setOrder, @@ -349,10 +346,6 @@ export default { if (this.order) { validatedQuery.order = this.order; } - - if (this.renewQuery) { - validatedQuery.renewQuery = this.renewQuery; - } } if ( @@ -430,7 +423,6 @@ export default { filters = [], limit, offset, - renewQuery, order, } = query || this.initialQuery; @@ -476,7 +468,6 @@ export default { this.availableSegments = this.meta.membersForQuery({}, 'segments') || []; this.limit = limit || 10000; this.offset = offset || null; - this.renewQuery = renewQuery || false; this.order = order || null; }, addMember(element, member) { diff --git a/packages/cubejs-client-vue3/tests/unit/QueryBuilder.spec.js b/packages/cubejs-client-vue3/tests/unit/QueryBuilder.spec.js index a1bee696981fb..5ddd5269ac686 100644 --- a/packages/cubejs-client-vue3/tests/unit/QueryBuilder.spec.js +++ b/packages/cubejs-client-vue3/tests/unit/QueryBuilder.spec.js @@ -746,34 +746,6 @@ describe('QueryBuilder.vue', () => { expect(wrapper.vm.offset).toBe(10); }); - it('sets renewQuery', async () => { - const cube = createCubeApi(); - jest - .spyOn(cube, 'request') - .mockImplementation(fetchMock(load)) - .mockImplementationOnce(fetchMock(meta)); - - const filter = { - member: 'Orders.status', - operator: 'equals', - values: ['invalid'], - }; - - const wrapper = shallowMount(QueryBuilder, { - props: { - cubeApi: cube, - query: { - filters: [filter], - renewQuery: true, - }, - }, - }); - - await flushPromises(); - - expect(wrapper.vm.renewQuery).toBe(true); - }); - it('ignore order if empty', async () => { const cube = createCubeApi(); jest diff --git a/packages/cubejs-playground/src/QueryBuilderV2/utils/validate-query.ts b/packages/cubejs-playground/src/QueryBuilderV2/utils/validate-query.ts index 513f9bcd2ae3d..fd8ffb0431337 100644 --- a/packages/cubejs-playground/src/QueryBuilderV2/utils/validate-query.ts +++ b/packages/cubejs-playground/src/QueryBuilderV2/utils/validate-query.ts @@ -138,11 +138,6 @@ export function validateQuery(query: Record): Query { sanitizedQuery.timezone = query.timezone; } - // It's not supported yet - // if (query.renewQuery === true) { - // sanitizedQuery.renewQuery = query.renewQuery; - // } - if (query.ungrouped === true) { sanitizedQuery.ungrouped = query.ungrouped; } diff --git a/packages/cubejs-playground/src/components/CachePane.tsx b/packages/cubejs-playground/src/components/CachePane.tsx index 9e65c04711f01..b3d400326bba7 100644 --- a/packages/cubejs-playground/src/components/CachePane.tsx +++ b/packages/cubejs-playground/src/components/CachePane.tsx @@ -9,7 +9,8 @@ import { FatalError } from './Error/FatalError'; const CachePane = ({ query }) => ( { if (error) { return ; diff --git a/packages/cubejs-query-orchestrator/src/orchestrator/PreAggregations.ts b/packages/cubejs-query-orchestrator/src/orchestrator/PreAggregations.ts index fc890b7df1b6c..335ba9a9b68c6 100644 --- a/packages/cubejs-query-orchestrator/src/orchestrator/PreAggregations.ts +++ b/packages/cubejs-query-orchestrator/src/orchestrator/PreAggregations.ts @@ -545,7 +545,7 @@ export class PreAggregations { maxPartitions: this.options.maxPartitions, maxSourceRowLimit: this.options.maxSourceRowLimit, isJob: queryBody.isJob, - waitForRenew: queryBody.cacheMode !== undefined ? queryBody.cacheMode === 'must-revalidate' : queryBody.renewQuery, + waitForRenew: queryBody.cacheMode === 'must-revalidate', // TODO workaround to avoid continuous waiting on building pre-aggregation dependencies forceBuild: i === preAggregations.length - 1 ? queryBody.forceBuildPreAggregations : false, requestId: queryBody.requestId, @@ -664,7 +664,7 @@ export class PreAggregations { { maxPartitions: this.options.maxPartitions, maxSourceRowLimit: this.options.maxSourceRowLimit, - waitForRenew: queryBody.cacheMode !== undefined ? queryBody.cacheMode === 'must-revalidate' : queryBody.renewQuery, + waitForRenew: queryBody.cacheMode === 'must-revalidate', requestId: queryBody.requestId, externalRefresh: this.externalRefresh, compilerCacheFn: queryBody.compilerCacheFn, diff --git a/packages/cubejs-query-orchestrator/src/orchestrator/QueryCache.ts b/packages/cubejs-query-orchestrator/src/orchestrator/QueryCache.ts index a0d892d331ea5..d4d6e85cecb53 100644 --- a/packages/cubejs-query-orchestrator/src/orchestrator/QueryCache.ts +++ b/packages/cubejs-query-orchestrator/src/orchestrator/QueryCache.ts @@ -70,8 +70,6 @@ export type Query = { preAggregations?: PreAggregationDescription[]; groupedPartitionPreAggregations?: PreAggregationDescription[][]; preAggregationsLoadCacheByDataSource?: any; - // @deprecated - renewQuery?: boolean; cacheMode?: CacheMode; compilerCacheFn?: (subKey: string[], cacheFn: () => T) => T; }; @@ -83,8 +81,6 @@ export type QueryBody = { values?: string[]; loadRefreshKeysOnly?: boolean; scheduledRefresh?: boolean; - // @deprecated - renewQuery?: boolean; cacheMode?: CacheMode; requestId?: string; external?: boolean; @@ -286,8 +282,7 @@ export class QueryCache { } } - // renewQuery has been deprecated, but keeping it for now - if (queryBody.cacheMode === 'must-revalidate' || queryBody.renewQuery) { + if (queryBody.cacheMode === 'must-revalidate') { this.logger('Requested renew', { cacheKey, requestId: queryBody.requestId }); return this.renewQuery( query, diff --git a/packages/cubejs-query-orchestrator/test/unit/PreAggregations.test.ts b/packages/cubejs-query-orchestrator/test/unit/PreAggregations.test.ts index f8e31b4f4eb97..1838a8e083c9e 100644 --- a/packages/cubejs-query-orchestrator/test/unit/PreAggregations.test.ts +++ b/packages/cubejs-query-orchestrator/test/unit/PreAggregations.test.ts @@ -147,8 +147,8 @@ describe('PreAggregations', () => { const basicQuery: any = createBasicQuery(); const basicQueryExternal = createBasicQuery({ preAggregations: [{ ...basicQuery.preAggregations[0], external: true }] }); - const basicQueryWithRenew = createBasicQuery({ renewQuery: true }); - const basicQueryExternalWithRenew = createBasicQuery({ preAggregations: [{ ...basicQuery.preAggregations[0], external: true }], renewQuery: true }); + const basicQueryWithRenew = createBasicQuery({ cacheMode: 'must-revalidate' }); + const basicQueryExternalWithRenew = createBasicQuery({ preAggregations: [{ ...basicQuery.preAggregations[0], external: true }], cacheMode: 'must-revalidate' }); beforeEach(() => { mockDriver = new MockDriver(); diff --git a/packages/cubejs-query-orchestrator/test/unit/QueryOrchestrator.test.js b/packages/cubejs-query-orchestrator/test/unit/QueryOrchestrator.test.js index 6e1346de0acd8..c204758aaf085 100644 --- a/packages/cubejs-query-orchestrator/test/unit/QueryOrchestrator.test.js +++ b/packages/cubejs-query-orchestrator/test/unit/QueryOrchestrator.test.js @@ -357,7 +357,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations.orders_number_and_count20191101 AS SELECT\n date_trunc(\'week\', ("orders".created_at::timestamptz AT TIME ZONE \'UTC\')) "orders__created_at_week", count("orders".id) "orders__count", sum("orders".number) "orders__number"\n FROM\n public.orders AS "orders"\n WHERE ("orders".created_at >= $1::timestamptz AND "orders".created_at <= $2::timestamptz) GROUP BY 1', ['2019-11-01T00:00:00Z', '2019-11-30T23:59:59Z']], invalidateKeyQueries: [['SELECT date_trunc(\'hour\', (NOW()::timestamptz AT TIME ZONE \'UTC\')) as current_hour', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'basic' }; const promise = queryOrchestrator.fetchQuery(query); @@ -386,7 +386,7 @@ describe('QueryOrchestrator', () => { indexName: 'orders_number_and_count_week20191101' }], }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'indexes' }; const result = await queryOrchestrator.fetchQuery(query); @@ -413,7 +413,7 @@ describe('QueryOrchestrator', () => { indexName: 'orders_number_and_count_week20191102' }], }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'index is part of query key' }); await new Promise(resolve => setTimeout(() => resolve(), 400)); @@ -431,7 +431,7 @@ describe('QueryOrchestrator', () => { invalidateKeyQueries: [['SELECT date_trunc(\'hour\', (NOW()::timestamptz AT TIME ZONE \'UTC\')) as current_hour', []]], indexesSql: [], }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'index is part of query key' }); console.log(result.data[0]); @@ -457,7 +457,7 @@ describe('QueryOrchestrator', () => { }], external: true }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'external indexes' }; const result = await queryOrchestrator.fetchQuery(query); @@ -489,7 +489,7 @@ describe('QueryOrchestrator', () => { external: true, dataSource: 'bar' }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'external join', dataSource: 'foo', external: true @@ -523,7 +523,7 @@ describe('QueryOrchestrator', () => { external: true, dataSource: 'csv', }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'csv import' }; const result = await queryOrchestrator.fetchQuery(query); @@ -546,7 +546,7 @@ describe('QueryOrchestrator', () => { invalidateKeyQueries: [['SELECT date_trunc(\'hour\', (NOW()::timestamptz AT TIME ZONE \'UTC\')) as current_hour', []]], dataSource: 'foo' }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'non default data source pre-aggregation', dataSource: 'foo', }; @@ -564,7 +564,7 @@ describe('QueryOrchestrator', () => { renewalThreshold: 21600, queries: [['SELECT date_trunc(\'hour\', (NOW()::timestamptz AT TIME ZONE \'UTC\')) as current_hour', []]] }, - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'non default data source query', dataSource: 'foo', }; @@ -588,7 +588,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations.orders_number_and_count_and_very_very_very_very_very_very_long20191101 AS SELECT\n date_trunc(\'week\', ("orders".created_at::timestamptz AT TIME ZONE \'UTC\')) "orders__created_at_week", count("orders".id) "orders__count", sum("orders".number) "orders__number"\n FROM\n public.orders AS "orders"\n WHERE ("orders".created_at >= $1::timestamptz AND "orders".created_at <= $2::timestamptz) GROUP BY 1', ['2019-11-01T00:00:00Z', '2019-11-30T23:59:59Z']], invalidateKeyQueries: [['SELECT date_trunc(\'hour\', (NOW()::timestamptz AT TIME ZONE \'UTC\')) as current_hour', []]], }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'silent truncate' }; let thrown = true; @@ -615,7 +615,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations.orders_number_and_count20181101 AS SELECT\n date_trunc(\'week\', ("orders".created_at::timestamptz AT TIME ZONE \'UTC\')) "orders__created_at_week", count("orders".id) "orders__count", sum("orders".number) "orders__number"\n FROM\n public.orders_too_big AS "orders"\n WHERE ("orders".created_at >= $1::timestamptz AND "orders".created_at <= $2::timestamptz) GROUP BY 1', ['2018-11-01T00:00:00Z', '2018-11-30T23:59:59Z']], invalidateKeyQueries: [['SELECT date_trunc(\'hour\', (NOW()::timestamptz AT TIME ZONE \'UTC\')) as current_hour', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'cancel pre-aggregation' }; try { @@ -641,7 +641,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations.orders AS SELECT * FROM public.orders', []], invalidateKeyQueries: [['SELECT 1', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'save structure versions' }); @@ -658,7 +658,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations.orders AS SELECT * FROM public.orders1', []], invalidateKeyQueries: [['SELECT 1', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'save structure versions' }); @@ -678,7 +678,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations.orders AS SELECT * FROM public.orders', []], invalidateKeyQueries: [['SELECT 2', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'save structure versions' }); } @@ -777,7 +777,7 @@ describe('QueryOrchestrator', () => { // start renew refresh as scheduled refresh does const refresh = queryOrchestrator.fetchQuery({ ...baseQuery, - renewQuery: true, + cacheMode: 'must-revalidate', requestId: `${requestId}: start refresh` }); @@ -905,7 +905,7 @@ describe('QueryOrchestrator', () => { invalidateKeyQueries: [['SELECT date_trunc(\'hour\', (NOW()::timestamptz AT TIME ZONE \'UTC\')) as current_hour', []]], external: true, }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'load cache should respect external flag' }; const internalPreAggregation = { @@ -922,7 +922,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations.internal AS SELECT\n date_trunc(\'week\', ("orders".created_at::timestamptz AT TIME ZONE \'UTC\')) "orders__created_at_week", count("orders".id) "orders__count", sum("orders".number) "orders__number"\n FROM\n public.orders AS "orders"\n WHERE ("orders".created_at >= $1::timestamptz AND "orders".created_at <= $2::timestamptz) GROUP BY 1', ['2019-11-01T00:00:00Z', '2019-11-30T23:59:59Z']], invalidateKeyQueries: [['SELECT date_trunc(\'hour\', (NOW()::timestamptz AT TIME ZONE \'UTC\')) as current_hour', []]], }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'load cache should respect external flag' }; await queryOrchestrator.fetchQuery(internalPreAggregation); @@ -947,7 +947,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations.orders AS SELECT * FROM public.orders', []], invalidateKeyQueries: [['SELECT 2', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'pre-aggregation version entries' }); @@ -964,7 +964,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE stb_pre_aggregations_2.orders AS SELECT * FROM public.orders', []], invalidateKeyQueries: [['SELECT 3', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'pre-aggregation version entries' }); @@ -1023,7 +1023,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE pre_aggregations_1.orders AS SELECT * FROM public.orders WHERE tenant_id = 1', []], invalidateKeyQueries: [['SELECT 1', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'pre-aggregation schema cache' }); @@ -1040,7 +1040,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE pre_aggregations_2.orders AS SELECT * FROM public.orders WHERE tenant_id = 2', []], invalidateKeyQueries: [['SELECT 2', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'pre-aggregation schema cache' }); @@ -1057,7 +1057,7 @@ describe('QueryOrchestrator', () => { loadSql: ['CREATE TABLE pre_aggregations_1.orders AS SELECT * FROM public.orders WHERE tenant_id = 1', []], invalidateKeyQueries: [['SELECT 1', []]] }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'pre-aggregation schema cache' }); @@ -1499,7 +1499,7 @@ describe('QueryOrchestrator', () => { ] }, preAggregations: [], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'loadRefreshKeys should respect external flag' }; @@ -1562,7 +1562,7 @@ describe('QueryOrchestrator', () => { dataSource: 'mockDriverUnloadWithoutTempTableSupport', external: true, }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'basic' }; @@ -1589,7 +1589,7 @@ describe('QueryOrchestrator', () => { dataSource: 'streaming', external: true, }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'basic' }; @@ -1616,7 +1616,7 @@ describe('QueryOrchestrator', () => { external: true, streamOffset: 'earliest' }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'basic' }; @@ -1646,7 +1646,7 @@ describe('QueryOrchestrator', () => { streamOffset: 'earliest', readOnly: true }], - renewQuery: true, + cacheMode: 'must-revalidate', requestId: 'basic' }; diff --git a/packages/cubejs-schema-compiler/test/integration/postgres/views-join-order-2.test.ts b/packages/cubejs-schema-compiler/test/integration/postgres/views-join-order-2.test.ts index 7f278639ff8c5..555567f24e2c1 100644 --- a/packages/cubejs-schema-compiler/test/integration/postgres/views-join-order-2.test.ts +++ b/packages/cubejs-schema-compiler/test/integration/postgres/views-join-order-2.test.ts @@ -158,7 +158,6 @@ cube('D', { segments: [], filters: [], total: true, - renewQuery: false, limit: 1 }, [{ view___a_id: 1, diff --git a/rust/cube/cubeorchestrator/benches/transform.rs b/rust/cube/cubeorchestrator/benches/transform.rs index e3ba6c9ed6dca..57562aeaca7b4 100644 --- a/rust/cube/cubeorchestrator/benches/transform.rs +++ b/rust/cube/cubeorchestrator/benches/transform.rs @@ -126,7 +126,6 @@ fn build_request( total: None, total_query: None, timezone: Some("UTC".to_string()), - renew_query: None, ungrouped: None, response_format: None, filters: None, diff --git a/rust/cube/cubeorchestrator/src/query_result_transform.rs b/rust/cube/cubeorchestrator/src/query_result_transform.rs index a069d8bda04de..f4c8a29c26b27 100644 --- a/rust/cube/cubeorchestrator/src/query_result_transform.rs +++ b/rust/cube/cubeorchestrator/src/query_result_transform.rs @@ -3491,7 +3491,6 @@ mod tests { total: None, total_query: None, timezone: None, - renew_query: None, ungrouped: None, response_format: None, filters: None, diff --git a/rust/cube/cubeorchestrator/src/transport.rs b/rust/cube/cubeorchestrator/src/transport.rs index 6b8ed0b95d7c4..a32ff801b7cc4 100644 --- a/rust/cube/cubeorchestrator/src/transport.rs +++ b/rust/cube/cubeorchestrator/src/transport.rs @@ -304,8 +304,6 @@ pub struct NormalizedQuery { #[serde(skip_serializing_if = "Option::is_none")] pub timezone: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub renew_query: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub ungrouped: Option, #[serde(skip_serializing_if = "Option::is_none")] pub response_format: Option, From 41d42d669486e763ad984fda5e64e33438baa5a4 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 11 Jun 2026 18:37:05 +0200 Subject: [PATCH 05/24] feat!: Remove deprecated context_to_roles configuration option (#11055) BREAKING CHANGE: The context_to_roles (contextToRoles) configuration option has been removed. It was deprecated in v1.6.4. Use context_to_groups (contextToGroups) instead. --- DEPRECATION.md | 8 +-- .../data-modeling/data-access-policies.mdx | 1 - .../reference/configuration/config.mdx | 34 ------------- .../product/auth/data-access-policies.mdx | 1 - .../configuration/reference/config.mdx | 34 ------------- .../benchmarks/fixtures/config-async.py | 8 --- .../benchmarks/fixtures/config.py | 8 --- packages/cubejs-backend-native/js/index.ts | 1 - .../python/cube/src/__init__.py | 2 - .../src/python/cube_config.rs | 1 - packages/cubejs-backend-native/test/config.py | 9 ---- .../cubejs-backend-native/test/old-config.py | 6 --- .../cubejs-backend-native/test/python.test.ts | 10 ---- .../src/compiler/CubeSymbols.ts | 1 - .../src/compiler/CubeValidator.ts | 9 ++-- .../unit/__snapshots__/schema.test.ts.snap | 32 ++++++------ .../test/unit/cube-validator.test.ts | 51 +------------------ .../test/unit/fixtures/orders_big.js | 4 +- .../test/unit/fixtures/orders_big.yml | 4 +- .../test/unit/fixtures/orders_ext.js | 2 +- .../test/unit/fixtures/orders_ext.yml | 2 +- .../unit/fixtures/orders_incorrect_acl.yml | 4 +- .../unit/fixtures/orders_nonexist_acl.yml | 4 +- .../test/unit/links.test.ts | 6 +-- .../test/unit/transpilers.test.ts | 16 +++--- .../cubejs-schema-compiler/test/unit/utils.ts | 6 +-- .../test/unit/yaml-schema.test.ts | 10 ++-- .../src/core/CompilerApi.ts | 47 ++++------------- .../src/core/optionsValidate.ts | 1 - .../cubejs-server-core/src/core/server.ts | 2 - packages/cubejs-server-core/src/core/types.ts | 2 - .../test/unit/index.test.ts | 47 ----------------- .../birdbox-fixtures/rbac-graphql/cube.js | 2 +- .../rbac-graphql/model/Orders.js | 6 +-- .../birdbox-fixtures/rbac-python/cube.py | 8 +-- .../rbac-python/model/cubes/products.yaml | 2 +- .../rbac-python/model/cubes/users.yaml | 4 +- .../rbac-python/model/views/users_view.yaml | 2 +- .../birdbox-fixtures/rbac/cube.js | 37 ++++---------- .../model/cubes/conditional_masking_test.yaml | 6 +-- .../rbac/model/cubes/line_items.js | 8 +-- .../rbac/model/cubes/masking_test.yaml | 26 +++++----- .../rbac/model/cubes/orders.js | 4 +- .../rbac/model/cubes/policy_overlap_test.yaml | 4 +- .../rbac/model/cubes/products.yaml | 2 +- .../rbac/model/cubes/region_test.yaml | 2 +- .../rbac/model/cubes/security_context_test.js | 8 +-- .../rbac/model/cubes/users.yaml | 4 +- .../rbac/model/views/users.js | 2 +- .../rbac/model/views/views.yaml | 8 +-- .../test/smoke-rbac-graphql.test.ts | 8 +-- .../cubejs-testing/test/smoke-rbac.test.ts | 50 +++++++++--------- 52 files changed, 150 insertions(+), 416 deletions(-) diff --git a/DEPRECATION.md b/DEPRECATION.md index 9cf128f27c8bc..e044ce1ec3869 100644 --- a/DEPRECATION.md +++ b/DEPRECATION.md @@ -68,7 +68,7 @@ features: | Deprecated | [Node.js 20](#nodejs-20) | v1.3.0 | | | Removed | [`renewQuery` parameter of the `/v1/load` endpoint](#renewquery-parameter-of-the-v1load-endpoint) | v1.3.73 | v1.7.0 | | Removed | [Elasticsearch driver](#elasticsearch-driver) | v1.6.0 | v1.7.0 | -| Deprecated | [`context_to_roles`](#context-to-roles) | v1.6.4 | | +| Removed | [`context_to_roles`](#context-to-roles) | v1.6.4 | v1.7.0 | ### Node.js 8 @@ -441,5 +441,7 @@ The Elasticsearch driver has been removed. **Deprecated in Release: v1.6.4** -The `context_to_roles` configuration option is deprecated and will be removed in a future -release. Please use `context_to_groups` instead. \ No newline at end of file +**Removed in Release: v1.7.0** + +The `context_to_roles` configuration option has been removed. Please use `context_to_groups` instead. + diff --git a/docs-mintlify/docs/data-modeling/data-access-policies.mdx b/docs-mintlify/docs/data-modeling/data-access-policies.mdx index a5a811cdabaef..77fbd1d47461d 100644 --- a/docs-mintlify/docs/data-modeling/data-access-policies.mdx +++ b/docs-mintlify/docs/data-modeling/data-access-policies.mdx @@ -773,7 +773,6 @@ cube(`orders`, { [ref-mls-public]: /docs/data-modeling/access-control/member-level-security#managing-member-level-access [ref-sec-ctx]: /docs/data-modeling/access-control/context [ref-ref-dap]: /reference/data-modeling/data-access-policies -[ref-ref-dap-role]: /reference/data-modeling/data-access-policies#role [ref-ref-dap-masking]: /reference/data-modeling/data-access-policies#member-masking [ref-ref-mask-dim]: /reference/data-modeling/dimensions#mask [ref-core-data-apis]: /reference/core-data-apis \ No newline at end of file diff --git a/docs-mintlify/reference/configuration/config.mdx b/docs-mintlify/reference/configuration/config.mdx index 164e21e353403..46bd74a9725c3 100644 --- a/docs-mintlify/reference/configuration/config.mdx +++ b/docs-mintlify/reference/configuration/config.mdx @@ -1515,40 +1515,6 @@ Usually used for [multitenancy][ref-multitenancy]. If not defined, Cube will lookup for environment variable [`CUBEJS_DB_TYPE`](/reference/configuration/environment-variables#cubejs_db_type) to resolve the data source type. -### `context_to_roles` - - - -`context_to_roles` is deprecated and will be removed in a future release. -Use [`context_to_groups`](#context_to_groups) instead. - - - -Used by [access policies][ref-dap]. This option is used to derive a list of -[data access roles][ref-dap-roles] from the [security context][ref-sec-ctx]. - - - -```python title="Python" -from cube import config - -@config('context_to_roles') -def context_to_roles(ctx: dict) -> list[str]: - return ctx['securityContext'].get('roles', ['default']) -``` - -```javascript title="JavaScript" - -module.exports = { - contextToRoles: ({ securityContext }) => { - return securityContext.roles || ['default'] - } -} -``` - - - - [gh-jsonwebtoken-algs]: https://github.com/auth0/node-jsonwebtoken#algorithms-supported [link-express-cors-opts]: diff --git a/docs/content/product/auth/data-access-policies.mdx b/docs/content/product/auth/data-access-policies.mdx index 076b2173efc76..5d6bfa8376860 100644 --- a/docs/content/product/auth/data-access-policies.mdx +++ b/docs/content/product/auth/data-access-policies.mdx @@ -569,7 +569,6 @@ cube(`orders`, { [ref-mls-public]: /product/auth/member-level-security#managing-member-level-access [ref-sec-ctx]: /product/auth/context [ref-ref-dap]: /product/data-modeling/reference/data-access-policies -[ref-ref-dap-role]: /product/data-modeling/reference/data-access-policies#role [ref-ref-dap-masking]: /product/data-modeling/reference/data-access-policies#member-masking [ref-ref-mask-dim]: /product/data-modeling/reference/dimensions#mask [ref-core-data-apis]: /product/apis-integrations/core-data-apis \ No newline at end of file diff --git a/docs/content/product/configuration/reference/config.mdx b/docs/content/product/configuration/reference/config.mdx index be97effe48988..8cbd7a15a0180 100644 --- a/docs/content/product/configuration/reference/config.mdx +++ b/docs/content/product/configuration/reference/config.mdx @@ -1474,40 +1474,6 @@ Usually used for [multitenancy][ref-multitenancy]. If not defined, Cube will lookup for environment variable CUBEJS_DB_TYPE to resolve the data source type. -### `context_to_roles` - - - -`context_to_roles` is deprecated and will be removed in a future release. -Use [`context_to_groups`](#context_to_groups) instead. - - - -Used by [access policies][ref-dap]. This option is used to derive a list of -[data access roles][ref-dap-roles] from the [security context][ref-sec-ctx]. - - - -```python -from cube import config - -@config('context_to_roles') -def context_to_roles(ctx: dict) -> list[str]: - return ctx['securityContext'].get('roles', ['default']) -``` - -```javascript - -module.exports = { - contextToRoles: ({ securityContext }) => { - return securityContext.roles || ['default'] - } -} -``` - - - - [gh-jsonwebtoken-algs]: https://github.com/auth0/node-jsonwebtoken#algorithms-supported [link-express-cors-opts]: diff --git a/packages/cubejs-backend-native/benchmarks/fixtures/config-async.py b/packages/cubejs-backend-native/benchmarks/fixtures/config-async.py index a14a6608d9448..53682050db7cd 100644 --- a/packages/cubejs-backend-native/benchmarks/fixtures/config-async.py +++ b/packages/cubejs-backend-native/benchmarks/fixtures/config-async.py @@ -95,14 +95,6 @@ async def logger(msg, params): pass -@config -async def context_to_roles(ctx): - # Removed print statements for benchmarking - return [ - "admin", - ] - - @config async def context_to_groups(ctx): # Removed print statements for benchmarking diff --git a/packages/cubejs-backend-native/benchmarks/fixtures/config.py b/packages/cubejs-backend-native/benchmarks/fixtures/config.py index b00cce6560e3e..3bab1a5baf764 100644 --- a/packages/cubejs-backend-native/benchmarks/fixtures/config.py +++ b/packages/cubejs-backend-native/benchmarks/fixtures/config.py @@ -95,14 +95,6 @@ def logger(msg, params): pass -@config -def context_to_roles(ctx): - # Removed print statements for benchmarking - return [ - "admin", - ] - - @config def context_to_groups(ctx): # Removed print statements for benchmarking diff --git a/packages/cubejs-backend-native/js/index.ts b/packages/cubejs-backend-native/js/index.ts index b5dbf3cdc4ad2..24715c926b0e0 100644 --- a/packages/cubejs-backend-native/js/index.ts +++ b/packages/cubejs-backend-native/js/index.ts @@ -535,7 +535,6 @@ export interface PyConfiguration { contextToApiScopes?: () => Promise scheduledRefreshContexts?: (ctx: unknown) => Promise scheduledRefreshTimeZones?: (ctx: unknown) => Promise - contextToRoles?: (ctx: unknown) => Promise contextToGroups?: (ctx: unknown) => Promise } diff --git a/packages/cubejs-backend-native/python/cube/src/__init__.py b/packages/cubejs-backend-native/python/cube/src/__init__.py index f779f8d13864f..21dcdf7764826 100644 --- a/packages/cubejs-backend-native/python/cube/src/__init__.py +++ b/packages/cubejs-backend-native/python/cube/src/__init__.py @@ -77,7 +77,6 @@ class Configuration: semantic_layer_sync: Union[Dict, Callable[[], Dict]] pre_aggregations_schema: Union[Callable[[RequestContext], str], str] orchestrator_options: Union[Dict, Callable[[RequestContext], Dict]] - context_to_roles: Callable[[RequestContext], list[str]] context_to_groups: Callable[[RequestContext], list[str]] fast_reload: bool @@ -128,7 +127,6 @@ def __init__(self): self.semantic_layer_sync = None self.pre_aggregations_schema = None self.orchestrator_options = None - self.context_to_roles = None self.context_to_groups = None self.fast_reload = None diff --git a/packages/cubejs-backend-native/src/python/cube_config.rs b/packages/cubejs-backend-native/src/python/cube_config.rs index 0dcb71a44531f..791fd62a70b68 100644 --- a/packages/cubejs-backend-native/src/python/cube_config.rs +++ b/packages/cubejs-backend-native/src/python/cube_config.rs @@ -51,7 +51,6 @@ impl CubeConfigPy { "context_to_app_id", "context_to_orchestrator_id", "context_to_cube_store_router_id", - "context_to_roles", "context_to_groups", "db_type", "driver_factory", diff --git a/packages/cubejs-backend-native/test/config.py b/packages/cubejs-backend-native/test/config.py index daac2b42ab2c0..1ad05ca00bcd4 100644 --- a/packages/cubejs-backend-native/test/config.py +++ b/packages/cubejs-backend-native/test/config.py @@ -99,15 +99,6 @@ def logger(msg, params): print("[python] logger msg", msg, "params=", params) -@config -def context_to_roles(ctx): - print("[python] context_to_roles", ctx) - - return [ - "admin", - ] - - @config def context_to_groups(ctx): print("[python] context_to_groups", ctx) diff --git a/packages/cubejs-backend-native/test/old-config.py b/packages/cubejs-backend-native/test/old-config.py index b81e2f00c8f05..c1d26ff6251a2 100644 --- a/packages/cubejs-backend-native/test/old-config.py +++ b/packages/cubejs-backend-native/test/old-config.py @@ -79,12 +79,6 @@ def logger(msg, params): settings.logger = logger -def context_to_roles(ctx): - print('[python] context_to_roles', ctx) - return ['admin'] - -settings.context_to_roles = context_to_roles - def context_to_groups(ctx): print('[python] context_to_groups', ctx) return ['dev', 'analytics'] diff --git a/packages/cubejs-backend-native/test/python.test.ts b/packages/cubejs-backend-native/test/python.test.ts index 6d83d7066477a..30b3375aae073 100644 --- a/packages/cubejs-backend-native/test/python.test.ts +++ b/packages/cubejs-backend-native/test/python.test.ts @@ -68,7 +68,6 @@ suite('Python Config', () => { queryRewrite: expect.any(Function), repositoryFactory: expect.any(Function), schemaVersion: expect.any(Function), - contextToRoles: expect.any(Function), contextToGroups: expect.any(Function), scheduledRefreshContexts: expect.any(Function), scheduledRefreshTimeZones: expect.any(Function), @@ -92,14 +91,6 @@ suite('Python Config', () => { }); }); - test('context_to_roles', async () => { - if (!config.contextToRoles) { - throw new Error('contextToRoles was not defined in config.py'); - } - - expect(await config.contextToRoles({})).toEqual(['admin']); - }); - test('context_to_groups', async () => { if (!config.contextToGroups) { throw new Error('contextToGroups was not defined in config.py'); @@ -251,7 +242,6 @@ darwinSuite('Old Python Config', () => { queryRewrite: expect.any(Function), repositoryFactory: expect.any(Function), schemaVersion: expect.any(Function), - contextToRoles: expect.any(Function), contextToGroups: expect.any(Function), scheduledRefreshContexts: expect.any(Function), scheduledRefreshTimeZones: expect.any(Function), diff --git a/packages/cubejs-schema-compiler/src/compiler/CubeSymbols.ts b/packages/cubejs-schema-compiler/src/compiler/CubeSymbols.ts index 8d3d88b5c82a4..05bccb946b3c3 100644 --- a/packages/cubejs-schema-compiler/src/compiler/CubeSymbols.ts +++ b/packages/cubejs-schema-compiler/src/compiler/CubeSymbols.ts @@ -125,7 +125,6 @@ export type Filter = }; export type AccessPolicyDefinition = { - role?: string; group?: string; groups?: string[]; rowLevel?: { diff --git a/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts b/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts index fa92c29859863..a7452ea2bff33 100644 --- a/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts +++ b/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts @@ -1130,8 +1130,7 @@ const RowLevelPolicySchema = Joi.object().keys({ allowAll: Joi.boolean().valid(true).strict(), }).xor('filters', 'allowAll'); -const RolePolicySchema = Joi.object().keys({ - role: Joi.string(), +const GroupPolicySchema = Joi.object().keys({ group: Joi.string(), groups: Joi.array().items(Joi.string()), memberLevel: MemberLevelPolicySchema, @@ -1142,9 +1141,7 @@ const RolePolicySchema = Joi.object().keys({ })), }) .nand('group', 'groups') // Cannot have both group and groups - .nand('role', 'group') // Cannot have both role and group - .nand('role', 'groups') // Cannot have both role and groups - .or('role', 'group', 'groups') // Must have at least one + .or('group', 'groups') // Must have at least one .with('memberMasking', 'memberLevel'); // memberMasking requires memberLevel /* ***************************** @@ -1199,7 +1196,7 @@ const baseSchema = { dimensions: DimensionsSchema, segments: SegmentsSchema, preAggregations: PreAggregationsAlternatives, - accessPolicy: Joi.array().items(RolePolicySchema.required()), + accessPolicy: Joi.array().items(GroupPolicySchema.required()), hierarchies: hierarchySchema, }; diff --git a/packages/cubejs-schema-compiler/test/unit/__snapshots__/schema.test.ts.snap b/packages/cubejs-schema-compiler/test/unit/__snapshots__/schema.test.ts.snap index bdd4996198b7f..1e48caa41d7f3 100644 --- a/packages/cubejs-schema-compiler/test/unit/__snapshots__/schema.test.ts.snap +++ b/packages/cubejs-schema-compiler/test/unit/__snapshots__/schema.test.ts.snap @@ -404,7 +404,7 @@ Object { exports[`Schema Testing Inheritance CubeB.js correctly extends cubeA.js (no additions): accessPolicy 1`] = ` Array [ Object { - "role": "*", + "group": "*", "rowLevel": Object { "allowAll": true, }, @@ -415,6 +415,7 @@ Array [ "if": [Function], }, ], + "group": "admin", "memberLevel": Object { "excludes": Array [ "status", @@ -433,7 +434,6 @@ Array [ "orders.sfUsers", ], }, - "role": "admin", "rowLevel": Object { "filters": Array [ Object { @@ -451,7 +451,7 @@ Array [ exports[`Schema Testing Inheritance CubeB.js correctly extends cubeA.js (no additions): accessPolicy 2`] = ` Array [ Object { - "role": "*", + "group": "*", "rowLevel": Object { "allowAll": true, }, @@ -462,6 +462,7 @@ Array [ "if": [Function], }, ], + "group": "admin", "memberLevel": Object { "excludes": Array [ "status", @@ -480,7 +481,6 @@ Array [ "ordersExt.sfUsers", ], }, - "role": "admin", "rowLevel": Object { "filters": Array [ Object { @@ -701,7 +701,7 @@ Object { exports[`Schema Testing Inheritance CubeB.js correctly extends cubeA.yml (no additions): accessPolicy 1`] = ` Array [ Object { - "role": "common", + "group": "common", "rowLevel": Object { "allowAll": true, }, @@ -712,6 +712,7 @@ Array [ "if": [Function], }, ], + "group": "admin", "memberLevel": Object { "excludesMembers": Array [], "includes": Array [ @@ -721,7 +722,6 @@ Array [ "orders.status", ], }, - "role": "admin", "rowLevel": Object { "filters": Array [ Object { @@ -771,7 +771,7 @@ Array [ exports[`Schema Testing Inheritance CubeB.js correctly extends cubeA.yml (no additions): accessPolicy 2`] = ` Array [ Object { - "role": "common", + "group": "common", "rowLevel": Object { "allowAll": true, }, @@ -782,6 +782,7 @@ Array [ "if": [Function], }, ], + "group": "admin", "memberLevel": Object { "excludesMembers": Array [], "includes": Array [ @@ -791,7 +792,6 @@ Array [ "ordersExt.status", ], }, - "role": "admin", "rowLevel": Object { "filters": Array [ Object { @@ -1048,7 +1048,7 @@ Object { exports[`Schema Testing Inheritance CubeB.yml correctly extends cubeA.js (no additions): accessPolicy 1`] = ` Array [ Object { - "role": "*", + "group": "*", "rowLevel": Object { "allowAll": true, }, @@ -1059,6 +1059,7 @@ Array [ "if": [Function], }, ], + "group": "admin", "memberLevel": Object { "excludes": Array [ "status", @@ -1077,7 +1078,6 @@ Array [ "orders.sfUsers", ], }, - "role": "admin", "rowLevel": Object { "filters": Array [ Object { @@ -1095,7 +1095,7 @@ Array [ exports[`Schema Testing Inheritance CubeB.yml correctly extends cubeA.js (no additions): accessPolicy 2`] = ` Array [ Object { - "role": "*", + "group": "*", "rowLevel": Object { "allowAll": true, }, @@ -1106,6 +1106,7 @@ Array [ "if": [Function], }, ], + "group": "admin", "memberLevel": Object { "excludes": Array [ "status", @@ -1124,7 +1125,6 @@ Array [ "ordersExt.sfUsers", ], }, - "role": "admin", "rowLevel": Object { "filters": Array [ Object { @@ -1345,7 +1345,7 @@ Object { exports[`Schema Testing Inheritance CubeB.yml correctly extends cubeA.yml (no additions): accessPolicy 1`] = ` Array [ Object { - "role": "common", + "group": "common", "rowLevel": Object { "allowAll": true, }, @@ -1356,6 +1356,7 @@ Array [ "if": [Function], }, ], + "group": "admin", "memberLevel": Object { "excludesMembers": Array [], "includes": Array [ @@ -1365,7 +1366,6 @@ Array [ "orders.status", ], }, - "role": "admin", "rowLevel": Object { "filters": Array [ Object { @@ -1415,7 +1415,7 @@ Array [ exports[`Schema Testing Inheritance CubeB.yml correctly extends cubeA.yml (no additions): accessPolicy 2`] = ` Array [ Object { - "role": "common", + "group": "common", "rowLevel": Object { "allowAll": true, }, @@ -1426,6 +1426,7 @@ Array [ "if": [Function], }, ], + "group": "admin", "memberLevel": Object { "excludesMembers": Array [], "includes": Array [ @@ -1435,7 +1436,6 @@ Array [ "ordersExt.status", ], }, - "role": "admin", "rowLevel": Object { "filters": Array [ Object { diff --git a/packages/cubejs-schema-compiler/test/unit/cube-validator.test.ts b/packages/cubejs-schema-compiler/test/unit/cube-validator.test.ts index 183b44abe4fcc..3b6bd2f32bd86 100644 --- a/packages/cubejs-schema-compiler/test/unit/cube-validator.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/cube-validator.test.ts @@ -1719,7 +1719,7 @@ describe('Cube Validation', () => { describe('Access Policy group/groups support:', () => { const cubeValidator = new CubeValidator(new CubeSymbols()); - it('should allow group instead of role', () => { + it('should allow group', () => { const cube = { name: 'TestCube', fileName: 'test.js', @@ -1749,21 +1749,6 @@ describe('Cube Validation', () => { expect(result.error).toBeFalsy(); }); - it('should allow role as single string (existing behavior)', () => { - const cube = { - name: 'TestCube', - fileName: 'test.js', - sql: () => 'SELECT * FROM test', - accessPolicy: [{ - role: 'admin', - rowLevel: { allowAll: true } - }] - }; - - const result = cubeValidator.validate(cube, new ConsoleErrorReporter()); - expect(result.error).toBeFalsy(); - }); - it('should allow group: "*" syntax', () => { const cube = { name: 'TestCube', @@ -1779,38 +1764,6 @@ describe('Cube Validation', () => { expect(result.error).toBeFalsy(); }); - it('should reject role and group together', () => { - const cube = { - name: 'TestCube', - fileName: 'test.js', - sql: () => 'SELECT * FROM test', - accessPolicy: [{ - role: 'admin', - group: 'admin', - rowLevel: { allowAll: true } - }] - }; - - const result = cubeValidator.validate(cube, new ConsoleErrorReporter()); - expect(result.error).toBeTruthy(); - }); - - it('should reject role and groups together', () => { - const cube = { - name: 'TestCube', - fileName: 'test.js', - sql: () => 'SELECT * FROM test', - accessPolicy: [{ - role: 'admin', - groups: ['user'], - rowLevel: { allowAll: true } - }] - }; - - const result = cubeValidator.validate(cube, new ConsoleErrorReporter()); - expect(result.error).toBeTruthy(); - }); - it('should reject group and groups together', () => { const cube = { name: 'TestCube', @@ -1827,7 +1780,7 @@ describe('Cube Validation', () => { expect(result.error).toBeTruthy(); }); - it('should reject access policy without role/group/groups', () => { + it('should reject access policy without group/groups', () => { const cube = { name: 'TestCube', fileName: 'test.js', diff --git a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_big.js b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_big.js index 28f788bccf759..e654d5e65d06f 100644 --- a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_big.js +++ b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_big.js @@ -72,13 +72,13 @@ cube('orders', { accessPolicy: [ { - role: "*", + group: "*", rowLevel: { allowAll: true } }, { - role: 'admin', + group: 'admin', conditions: [ { if: `true`, diff --git a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_big.yml b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_big.yml index 259e9bdfd65ef..77564544d69d4 100644 --- a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_big.yml +++ b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_big.yml @@ -57,10 +57,10 @@ cubes: scheduled_refresh: true accessPolicy: - - role: common + - group: common rowLevel: allowAll: true - - role: admin + - group: admin conditions: - if: "{ security_context.isNotBlocked }" rowLevel: diff --git a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_ext.js b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_ext.js index 2af92e7c9a6a3..6494a9e50a6bb 100644 --- a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_ext.js +++ b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_ext.js @@ -46,7 +46,7 @@ cube('ordersExt', { accessPolicy: [ { - role: 'manager', + group: 'manager', conditions: [ { if: security_context.userId === 1, diff --git a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_ext.yml b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_ext.yml index 1cf957ebe4fe6..6dde0c6ebfc72 100644 --- a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_ext.yml +++ b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_ext.yml @@ -34,7 +34,7 @@ cubes: dimensions: [city] accessPolicy: - - role: manager + - group: manager memberLevel: excludes: - status diff --git a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_incorrect_acl.yml b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_incorrect_acl.yml index efbcd0384a623..e66bbdd105e06 100644 --- a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_incorrect_acl.yml +++ b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_incorrect_acl.yml @@ -57,10 +57,10 @@ cubes: scheduled_refresh: true accessPolicy: - - role: common + - group: common rowLevel: allowAll: true - - role: admin + - group: admin conditions: - if: "{ security_context.isNotBlocked }" rowLevel: diff --git a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_nonexist_acl.yml b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_nonexist_acl.yml index e0434303d4640..c9e56bcd94d2d 100644 --- a/packages/cubejs-schema-compiler/test/unit/fixtures/orders_nonexist_acl.yml +++ b/packages/cubejs-schema-compiler/test/unit/fixtures/orders_nonexist_acl.yml @@ -57,10 +57,10 @@ cubes: scheduled_refresh: true accessPolicy: - - role: common + - group: common rowLevel: allowAll: true - - role: admin + - group: admin conditions: - if: "{ security_context.isNotBlocked }" rowLevel: diff --git a/packages/cubejs-schema-compiler/test/unit/links.test.ts b/packages/cubejs-schema-compiler/test/unit/links.test.ts index bdb810a8f38c8..ac46b24d0eade 100644 --- a/packages/cubejs-schema-compiler/test/unit/links.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/links.test.ts @@ -434,7 +434,7 @@ views: - full_name - email access_policy: - - role: "*" + - group: "*" member_level: includes: - full_name @@ -485,7 +485,7 @@ views: - full_name - email access_policy: - - role: "*" + - group: "*" member_level: includes: - full_name @@ -535,7 +535,7 @@ views: - join_path: users includes: "*" access_policy: - - role: "*" + - group: "*" member_level: includes: "*" `; diff --git a/packages/cubejs-schema-compiler/test/unit/transpilers.test.ts b/packages/cubejs-schema-compiler/test/unit/transpilers.test.ts index 5854317cc0ee2..35295299f8c00 100644 --- a/packages/cubejs-schema-compiler/test/unit/transpilers.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/transpilers.test.ts @@ -63,7 +63,7 @@ describe('Transpilers', () => { }, accessPolicy: [ { - role: \`*\`, + group: \`*\`, rowLevel: { filters: [ { @@ -96,7 +96,7 @@ describe('Transpilers', () => { }, accessPolicy: [ { - role: \`*\`, + group: \`*\`, rowLevel: { filters: [ { @@ -129,7 +129,7 @@ describe('Transpilers', () => { }, accessPolicy: [ { - role: \`*\`, + group: \`*\`, rowLevel: { filters: [ { @@ -162,7 +162,7 @@ describe('Transpilers', () => { }, accessPolicy: [ { - role: \`*\`, + group: \`*\`, rowLevel: { filters: [ { @@ -195,7 +195,7 @@ describe('Transpilers', () => { }, accessPolicy: [ { - role: \`*\`, + group: \`*\`, rowLevel: { filters: [ { @@ -228,7 +228,7 @@ describe('Transpilers', () => { }, accessPolicy: [ { - role: \`*\`, + group: \`*\`, rowLevel: { filters: [ { @@ -261,7 +261,7 @@ describe('Transpilers', () => { }, accessPolicy: [ { - role: \`*\`, + group: \`*\`, rowLevel: { filters: [ { @@ -294,7 +294,7 @@ describe('Transpilers', () => { }, accessPolicy: [ { - role: \`*\`, + group: \`*\`, rowLevel: { filters: [ { diff --git a/packages/cubejs-schema-compiler/test/unit/utils.ts b/packages/cubejs-schema-compiler/test/unit/utils.ts index 61d9c68dfe588..2cf604e7ebf1f 100644 --- a/packages/cubejs-schema-compiler/test/unit/utils.ts +++ b/packages/cubejs-schema-compiler/test/unit/utils.ts @@ -165,13 +165,13 @@ export function createCubeSchemaWithAccessPolicy(name: string, extraPolicies: st }, accessPolicy: [ { - role: "*", + group: "*", rowLevel: { allowAll: true } }, { - role: 'admin', + group: 'admin', conditions: [ { if: \`true\`, @@ -192,7 +192,7 @@ export function createCubeSchemaWithAccessPolicy(name: string, extraPolicies: st }, }, { - role: 'manager', + group: 'manager', conditions: [ { if: security_context.userId === 1, diff --git a/packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts b/packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts index f8421f4bca508..5eb64ab75f8ab 100644 --- a/packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts @@ -859,7 +859,7 @@ cubes: - name: count type: count accessPolicy: - - role: admin + - group: admin conditions: - if: "{ security_context.isNotBlocked }" rowLevel: @@ -888,7 +888,7 @@ cubes: memberLevel: includes: - status - - role: manager + - group: manager memberLevel: excludes: - status @@ -1742,7 +1742,7 @@ cubes: - name: count type: count access_policy: - - role: "*" + - group: "*" member_level: includes: [] member_masking: @@ -1792,7 +1792,7 @@ cubes: - name: count type: count access_policy: - - role: "*" + - group: "*" member_level: includes: [] member_masking: @@ -1825,7 +1825,7 @@ cubes: - name: count type: count access_policy: - - role: "*" + - group: "*" member_level: includes: [] member_masking: diff --git a/packages/cubejs-server-core/src/core/CompilerApi.ts b/packages/cubejs-server-core/src/core/CompilerApi.ts index e1f62fea4dfed..c6e1481713747 100644 --- a/packages/cubejs-server-core/src/core/CompilerApi.ts +++ b/packages/cubejs-server-core/src/core/CompilerApi.ts @@ -38,7 +38,6 @@ export interface CompilerApiOptions { allowUngroupedWithoutPrimaryKey?: boolean; convertTzForRawTimeDimension?: boolean; schemaVersion?: () => string | object | Promise; - contextToRoles?: (context: Context) => string[] | Promise; contextToGroups?: (context: Context) => string[] | Promise; compileContext?: any; allowJsDuplicatePropsInSchema?: boolean; @@ -108,8 +107,6 @@ export class CompilerApi { public schemaVersion?: () => string | object | Promise; - protected readonly contextToRoles?: (context: Context) => string[] | Promise; - protected readonly contextToGroups?: (context: Context) => string[] | Promise; protected readonly compileContext?: any; @@ -150,7 +147,6 @@ export class CompilerApi { this.allowUngroupedWithoutPrimaryKey = this.options.allowUngroupedWithoutPrimaryKey; this.convertTzForRawTimeDimension = this.options.convertTzForRawTimeDimension; this.schemaVersion = this.options.schemaVersion; - this.contextToRoles = this.options.contextToRoles; this.contextToGroups = this.options.contextToGroups; this.compileContext = options.compileContext; this.allowJsDuplicatePropsInSchema = options.allowJsDuplicatePropsInSchema; @@ -382,13 +378,6 @@ export class CompilerApi { } } - protected async getRolesFromContext(context: Context): Promise> { - if (!this.contextToRoles) { - return new Set(); - } - return new Set(await this.contextToRoles(context)); - } - protected async getGroupsFromContext(context: Context): Promise> { if (!this.contextToGroups) { return new Set(); @@ -396,10 +385,6 @@ export class CompilerApi { return new Set(await this.contextToGroups(context)); } - protected userHasRole(userRoles: Set, role: string): boolean { - return userRoles.has(role) || role === '*'; - } - protected userHasGroup(userGroups: Set, group: string | string[]): boolean { if (Array.isArray(group)) { return group.some(g => userGroups.has(g) || g === '*'); @@ -407,7 +392,7 @@ export class CompilerApi { return userGroups.has(group) || group === '*'; } - protected roleMeetsConditions(evaluatedConditions?: any[]): boolean { + protected policyMeetsConditions(evaluatedConditions?: any[]): boolean { if (evaluatedConditions?.length) { return evaluatedConditions.reduce((a, b) => { if (typeof b !== 'boolean') { @@ -435,19 +420,8 @@ export class CompilerApi { const cache = compilers.compilerCache.getRbacCacheInstance(); const cacheKey = `${cube.name}_${this.hashRequestContext(context)}`; if (!cache.has(cacheKey)) { - const userRoles = await this.getRolesFromContext(context); const userGroups = await this.getGroupsFromContext(context); const policies = cube.accessPolicy.filter((policy: AccessPolicyDefinition) => { - // Validate that policy doesn't have both role and group/groups - this is invalid - if (policy.role && (policy.group || policy.groups)) { - const groupValue = policy.group || policy.groups; - const groupDisplay = Array.isArray(groupValue) ? groupValue.join(', ') : groupValue; - const groupProp = policy.group ? 'group' : 'groups'; - throw new Error( - `Access policy cannot have both 'role' and '${groupProp}' properties.\nPolicy in cube '${cube.name}' has role '${policy.role}' and ${groupProp} '${groupDisplay}'.\nUse either 'role' or '${groupProp}', not both.` - ); - } - // Validate that policy doesn't have both group and groups if (policy.group && policy.groups) { const groupDisplay = Array.isArray(policy.group) ? policy.group.join(', ') : policy.group; @@ -461,22 +435,19 @@ export class CompilerApi { (condition: any) => compilers.cubeEvaluator.evaluateContextFunction(cube, condition.if, context) ); - // Check if policy matches by role, group, or groups + // Check if policy matches by group or groups let hasAccess = false; - if (policy.role) { - hasAccess = this.userHasRole(userRoles, policy.role); - } else if (policy.group) { + if (policy.group) { hasAccess = this.userHasGroup(userGroups, policy.group); } else if (policy.groups) { hasAccess = this.userHasGroup(userGroups, policy.groups); } else { - // If policy has neither role nor group/groups, default to checking role for backward compatibility - hasAccess = this.userHasRole(userRoles, '*'); + // A policy without group/groups applies to everyone + hasAccess = this.userHasGroup(userGroups, '*'); } - const res = hasAccess && this.roleMeetsConditions(evaluatedConditions); - return res; + return hasAccess && this.policyMeetsConditions(evaluatedConditions); }); cache.set(cacheKey, policies); } @@ -508,10 +479,10 @@ export class CompilerApi { * This method rewrites the query according to RBAC row level security policies. * * If RBAC is enabled, it looks at all the Cubes from the query with accessPolicy defined. - * It extracts all policies applicable to for the current user context (contextToRoles() + conditions). + * It extracts all policies applicable to for the current user context (contextToGroups() + conditions). * It then generates a rls filter by - * - combining all filters for the same role with AND - * - combining all filters for different roles with OR + * - combining all filters for the same group with AND + * - combining all filters for different groups with OR * - combining cube and view filters with AND */ public async applyRowLevelSecurity( diff --git a/packages/cubejs-server-core/src/core/optionsValidate.ts b/packages/cubejs-server-core/src/core/optionsValidate.ts index 34eb1f5eee739..e31f39550af45 100644 --- a/packages/cubejs-server-core/src/core/optionsValidate.ts +++ b/packages/cubejs-server-core/src/core/optionsValidate.ts @@ -75,7 +75,6 @@ const schemaOptions = Joi.object().keys({ // cacheAndQueueDriver: Joi.string().valid('cubestore', 'memory'), contextToAppId: Joi.func(), - contextToRoles: Joi.func(), contextToGroups: Joi.func(), contextToOrchestratorId: Joi.func(), contextToCubeStoreRouterId: Joi.func(), diff --git a/packages/cubejs-server-core/src/core/server.ts b/packages/cubejs-server-core/src/core/server.ts index da04f2468415f..48b146c8abb70 100644 --- a/packages/cubejs-server-core/src/core/server.ts +++ b/packages/cubejs-server-core/src/core/server.ts @@ -539,7 +539,6 @@ export class CubejsServerCore { ), externalDialectClass: this.options.externalDialectFactory && this.options.externalDialectFactory(context), schemaVersion: currentSchemaVersion, - contextToRoles: this.options.contextToRoles, contextToGroups: this.options.contextToGroups, preAggregationsSchema: await this.preAggregationsSchema(context), context, @@ -730,7 +729,6 @@ export class CubejsServerCore { protected createCompilerApiOptions(options: Record = {}): CompilerApiOptions { return { schemaVersion: options.schemaVersion || this.options.schemaVersion, - contextToRoles: this.options.contextToRoles, contextToGroups: this.options.contextToGroups, devServer: this.options.devServer, logger: this.logger, diff --git a/packages/cubejs-server-core/src/core/types.ts b/packages/cubejs-server-core/src/core/types.ts index e02f480fb18df..51661178e2e0c 100644 --- a/packages/cubejs-server-core/src/core/types.ts +++ b/packages/cubejs-server-core/src/core/types.ts @@ -131,7 +131,6 @@ export type DatabaseType = | 'databricks-jdbc'; export type ContextToAppIdFn = (context: RequestContext) => string | Promise; -export type ContextToRolesFn = (context: RequestContext) => string[] | Promise; export type ContextToGroupsFn = (context: RequestContext) => string[] | Promise; export type ContextToOrchestratorIdFn = (context: RequestContext) => string | Promise; export type ContextToCubeStoreRouterIdFn = (context: RequestContext) => string | Promise; @@ -205,7 +204,6 @@ export interface CreateOptions { externalDialectFactory?: ExternalDialectFactoryFn; cacheAndQueueDriver?: CacheAndQueryDriverType; contextToAppId?: ContextToAppIdFn; - contextToRoles?: ContextToRolesFn; contextToGroups?: ContextToGroupsFn; contextToOrchestratorId?: ContextToOrchestratorIdFn; contextToCubeStoreRouterId?: ContextToCubeStoreRouterIdFn; diff --git a/packages/cubejs-server-core/test/unit/index.test.ts b/packages/cubejs-server-core/test/unit/index.test.ts index 64c158e944ed9..f769f0c5843ce 100644 --- a/packages/cubejs-server-core/test/unit/index.test.ts +++ b/packages/cubejs-server-core/test/unit/index.test.ts @@ -31,8 +31,6 @@ class CubejsServerCoreOpen extends CubejsServerCore { // Mock to expose protected methods for testing class CompilerApiOpen extends CompilerApi { - public getRolesFromContext = super.getRolesFromContext; - public getGroupsFromContext = super.getGroupsFromContext; } @@ -437,33 +435,6 @@ describe('index.test', () => { }); describe('CompilerApi validation', () => { - test('Should allow both contextToRoles and contextToGroups together', () => { - const logger = jest.fn(() => {}); - - expect(() => new CompilerApi( - repositoryWithoutPreAggregations, - async () => 'mysql', - { - logger, - contextToRoles: async () => ['admin'], - contextToGroups: async () => ['analytics'] - } - )).not.toThrow(); - }); - - test('Should allow only contextToRoles', () => { - const logger = jest.fn(() => {}); - - expect(() => new CompilerApi( - repositoryWithoutPreAggregations, - async () => 'mysql', - { - logger, - contextToRoles: async () => ['admin'] - } - )).not.toThrow(); - }); - test('Should allow only contextToGroups', () => { const logger = jest.fn(() => {}); @@ -477,24 +448,6 @@ describe('index.test', () => { )).not.toThrow(); }); - test('contextToRoles should be called and return expected roles', async () => { - const logger = jest.fn(() => {}); - const contextToRoles = jest.fn(async () => ['admin', 'manager']); - - const compilerApi = new CompilerApiOpen( - repositoryWithoutPreAggregations, - async () => 'mysql', - { - logger, - contextToRoles - } - ); - - const roles = await compilerApi.getRolesFromContext({ securityContext: { userId: 123 } }); - expect(contextToRoles).toHaveBeenCalledWith({ securityContext: { userId: 123 } }); - expect(roles).toEqual(new Set(['admin', 'manager'])); - }); - test('contextToGroups should be called and return expected groups', async () => { const logger = jest.fn(() => {}); const contextToGroups = jest.fn(async () => ['analytics', 'engineering']); diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac-graphql/cube.js b/packages/cubejs-testing/birdbox-fixtures/rbac-graphql/cube.js index b2e3b46245385..9aad1d937c25a 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac-graphql/cube.js +++ b/packages/cubejs-testing/birdbox-fixtures/rbac-graphql/cube.js @@ -1,5 +1,5 @@ module.exports = { - contextToRoles: ({ securityContext }) => securityContext?.auth?.roles || ['*'], + contextToGroups: ({ securityContext }) => securityContext?.auth?.groups || ['*'], // Same app ID for all tenants so they share a CompilerApi instance contextToAppId: () => 'CUBEJS_APP_shared', diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac-graphql/model/Orders.js b/packages/cubejs-testing/birdbox-fixtures/rbac-graphql/model/Orders.js index 3fb6e6f2052fd..33111d72723fe 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac-graphql/model/Orders.js +++ b/packages/cubejs-testing/birdbox-fixtures/rbac-graphql/model/Orders.js @@ -33,20 +33,20 @@ cube('Orders', { accessPolicy: [ { - role: '*', + group: '*', memberLevel: { includes: [], }, }, { - role: 'tenant-a', + group: 'tenant-a', memberLevel: { includes: '*', excludes: ['tier'], }, }, { - role: 'tenant-b', + group: 'tenant-b', memberLevel: { includes: '*', excludes: ['internalCode'], diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac-python/cube.py b/packages/cubejs-testing/birdbox-fixtures/rbac-python/cube.py index ca5e668d0c81a..7412fd164e8d4 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac-python/cube.py +++ b/packages/cubejs-testing/birdbox-fixtures/rbac-python/cube.py @@ -3,9 +3,9 @@ from cube import config -@config('context_to_roles') -def context_to_roles(context): - return context.get("securityContext", {}).get("auth", {}).get("roles", []) +@config('context_to_groups') +def context_to_groups(context): + return context.get("securityContext", {}).get("auth", {}).get("groups", []) def extract_matching_dicts(data): @@ -55,7 +55,7 @@ def check_sql_auth(query: dict, username: str, password: str) -> dict: 'canHaveAdmin': True, 'city': 'New York' }, - 'roles': ['admin'] + 'groups': ['admin'] } } } diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/cubes/products.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/cubes/products.yaml index db365575426cd..95bc5423f2265 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/cubes/products.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/cubes/products.yaml @@ -25,4 +25,4 @@ cubes: type: time access_policy: - - role: some_role + - group: some_group diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/cubes/users.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/cubes/users.yaml index ec2a64b2d26b8..3f7bed31d6c97 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/cubes/users.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/cubes/users.yaml @@ -18,13 +18,13 @@ cubes: primary_key: true access_policy: - - role: "*" + - group: "*" row_level: filters: - member: "{CUBE}.city" operator: equals values: ["{ security_context.auth.userAttributes.city }"] - - role: admin + - group: admin conditions: # This thing will fail if there's no auth info in the context # Unfortunately, as of now, there's no way to write more complex expressions diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/views/users_view.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/views/users_view.yaml index 0163cc4e83681..6f67311d539a8 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/views/users_view.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac-python/model/views/users_view.yaml @@ -5,7 +5,7 @@ views: includes: "*" access_policy: - - role: '*' + - group: '*' row_level: filters: - member: id diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/cube.js b/packages/cubejs-testing/birdbox-fixtures/rbac/cube.js index 84a96e7ca9913..9ee4c9a6c5cfb 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/cube.js +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/cube.js @@ -1,5 +1,4 @@ module.exports = { - contextToRoles: async (context) => context.securityContext.auth?.roles || [], contextToGroups: async (context) => context.securityContext.auth?.groups || [], canSwitchSqlUser: async () => true, checkSqlAuth: async (req, user, password) => { @@ -19,8 +18,7 @@ module.exports = { canHaveAdmin: true, minDefaultId: 10000, }, - roles: ['admin', 'ownder', 'hr'], - groups: ['leadership', 'hr'], + groups: ['leadership', 'hr', 'admin'], }, }, }; @@ -41,8 +39,7 @@ module.exports = { canHaveAdmin: false, minDefaultId: 10000, }, - roles: ['manager'], - groups: ['management'], + groups: ['management', 'manager'], }, }, }; @@ -63,7 +60,6 @@ module.exports = { canHaveAdmin: false, minDefaultId: 20000, }, - roles: [], groups: ['general'], }, }, @@ -85,7 +81,6 @@ module.exports = { canHaveAdmin: true, minDefaultId: 20000, }, - roles: ['restricted'], groups: ['restricted'], }, }, @@ -107,14 +102,13 @@ module.exports = { region: 'CA', allowedCities: ['Los Angeles', 'New York'], }, - roles: [], groups: ['developer'], }, }, }; } // User for testing two-dimensional policy overlap (matches diagram in CompilerApi.ts) - // Has policy2_role, so both Policy 1 (*) and Policy 2 (policy2_role) apply + // Has policy2_group, so both Policy 1 (*) and Policy 2 (policy2_group) apply if (user === 'policy_test') { if (password && password !== 'policy_test_password') { throw new Error(`Password doesn't match for ${user}`); @@ -126,13 +120,12 @@ module.exports = { auth: { username: 'policy_test', userAttributes: {}, - roles: ['policy2_role'], - groups: [], + groups: ['policy2_group'], }, }, }; } - // User for masking tests - no special roles, sees only masked values + // User for masking tests - no special groups, sees only masked values if (user === 'masking_viewer') { if (password && password !== 'masking_viewer_password') { throw new Error(`Password doesn't match for ${user}`); @@ -144,13 +137,12 @@ module.exports = { auth: { username: 'masking_viewer', userAttributes: {}, - roles: [], groups: [], }, }, }; } - // User for masking tests - has full access role + // User for masking tests - has full access group if (user === 'masking_full') { if (password && password !== 'masking_full_password') { throw new Error(`Password doesn't match for ${user}`); @@ -162,8 +154,7 @@ module.exports = { auth: { username: 'masking_full', userAttributes: {}, - roles: ['masking_full_access'], - groups: [], + groups: ['masking_full_access'], }, }, }; @@ -180,8 +171,7 @@ module.exports = { auth: { username: 'masking_partial', userAttributes: {}, - roles: ['masking_partial'], - groups: [], + groups: ['masking_partial'], }, }, }; @@ -199,7 +189,6 @@ module.exports = { userAttributes: { allowedProductIds: [1, 2], }, - roles: [], groups: ['user_group', 'region_group'], }, }, @@ -216,7 +205,6 @@ module.exports = { auth: { username: 'region_user_no_filter', userAttributes: {}, - roles: [], groups: ['user_group'], }, }, @@ -239,7 +227,6 @@ module.exports = { auth: { username: 'sc_test', userAttributes: {}, - roles: [], groups: [], }, }, @@ -256,8 +243,7 @@ module.exports = { auth: { username: 'conditional_mask_user', userAttributes: {}, - roles: ['conditional_mask_role'], - groups: [], + groups: ['conditional_mask_group'], }, }, }; @@ -273,8 +259,7 @@ module.exports = { auth: { username: 'conditional_mask_multi_user', userAttributes: {}, - roles: ['conditional_mask_role', 'conditional_mask_role_extra'], - groups: [], + groups: ['conditional_mask_group', 'conditional_mask_group_extra'], }, }, }; @@ -292,7 +277,6 @@ module.exports = { auth: { username: 'single_policy_measure_user', userAttributes: {}, - roles: [], groups: ['spm_full_group'], }, }, @@ -311,7 +295,6 @@ module.exports = { auth: { username: 'multi_group_user', userAttributes: {}, - roles: [], groups: ['mg_group_a', 'mg_group_c'], }, }, diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/conditional_masking_test.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/conditional_masking_test.yaml index 3d778e72b493d..e1a6ea3c7fdaa 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/conditional_masking_test.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/conditional_masking_test.yaml @@ -26,13 +26,13 @@ cubes: type: sum access_policy: - - role: "*" + - group: "*" member_level: includes: [] member_masking: includes: "*" - - role: "conditional_mask_role" + - group: "conditional_mask_group" member_level: includes: "*" row_level: @@ -42,7 +42,7 @@ cubes: values: - "3" - - role: "conditional_mask_role_extra" + - group: "conditional_mask_group_extra" member_level: includes: "*" row_level: diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/line_items.js b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/line_items.js index 8d35089fdbc43..8ed43922f463c 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/line_items.js +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/line_items.js @@ -47,7 +47,7 @@ cube('line_items', { accessPolicy: [ { - role: '*', + group: '*', rowLevel: { filters: [{ member: 'id', @@ -61,13 +61,13 @@ cube('line_items', { }, }, { - role: 'restricted', + group: 'restricted', memberLevel: { excludes: ['count', 'price', 'price_dim'], }, }, { - role: 'admin', + group: 'admin', conditions: [ { if: security_context.auth?.userAttributes?.region === 'CA', @@ -82,7 +82,7 @@ cube('line_items', { }, }, { - role: 'manager', + group: 'manager', conditions: [ { if: security_context.auth?.userAttributes?.region === 'CA', diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/masking_test.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/masking_test.yaml index 399b3bbf9f320..d43c917bd06fb 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/masking_test.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/masking_test.yaml @@ -43,19 +43,19 @@ cubes: type: sum access_policy: - - role: "*" + - group: "*" member_level: includes: [] member_masking: includes: "*" - - role: "masking_full_access" + - group: "masking_full_access" member_level: includes: "*" row_level: allow_all: true - - role: "masking_partial" + - group: "masking_partial" member_level: includes: - id @@ -102,7 +102,7 @@ cubes: type: sum access_policy: - - role: "*" + - group: "*" member_level: includes: [] @@ -126,7 +126,7 @@ cubes: type: count access_policy: - - role: "*" + - group: "*" member_level: includes: [] member_masking: @@ -205,7 +205,7 @@ cubes: type: count access_policy: - - role: "*" + - group: "*" member_level: includes: - id @@ -231,7 +231,7 @@ views: - count_d - total_quantity access_policy: - - role: "*" + - group: "*" member_level: includes: "*" row_level: @@ -249,14 +249,14 @@ views: - count_d - total_quantity access_policy: - - role: "*" + - group: "*" member_level: includes: [] member_masking: includes: "*" row_level: allow_all: true - - role: "masking_full_access" + - group: "masking_full_access" member_level: includes: "*" row_level: @@ -274,7 +274,7 @@ views: - count_d - total_quantity access_policy: - - role: "*" + - group: "*" member_level: includes: - public_dim @@ -304,7 +304,7 @@ views: - count access_policy: - - role: "*" + - group: "*" member_level: includes: - view_mask_base_id @@ -330,7 +330,7 @@ views: - count - total_quantity access_policy: - - role: "*" + - group: "*" member_level: includes: - public_dim @@ -339,7 +339,7 @@ views: includes: "*" row_level: allow_all: true - - role: "masking_full_access" + - group: "masking_full_access" member_level: includes: "*" row_level: diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/orders.js b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/orders.js index 029d5928cc7c5..49e1cea14ab09 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/orders.js +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/orders.js @@ -31,7 +31,7 @@ cube('orders', { access_policy: [ { - role: '*', + group: '*', memberLevel: { // This cube is "private" by default and only accessible via views includes: [], @@ -47,7 +47,7 @@ cube('orders', { }, }, { - role: 'admin', + group: 'admin', memberLevel: { // This cube is "private" by default and only accessible via views includes: [], diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/policy_overlap_test.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/policy_overlap_test.yaml index 9fe920caf8744..2dec37db9eb57 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/policy_overlap_test.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/policy_overlap_test.yaml @@ -51,7 +51,7 @@ views: access_policy: # Policy 1: covers members a, b (and count, id for filtering) with row filter R1 (id < 500) - - role: "*" + - group: "*" member_level: includes: - id @@ -66,7 +66,7 @@ views: - "500" # Policy 2: covers members b, c (and count, id for filtering) with row filter R2 (id >= 500) - - role: "policy2_role" + - group: "policy2_group" member_level: includes: - id diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/products.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/products.yaml index db365575426cd..95bc5423f2265 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/products.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/products.yaml @@ -25,4 +25,4 @@ cubes: type: time access_policy: - - role: some_role + - group: some_group diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/region_test.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/region_test.yaml index 8e4406b849f41..6f225f03936c7 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/region_test.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/region_test.yaml @@ -17,7 +17,7 @@ cubes: type: number access_policy: - - role: "*" + - group: "*" member_level: includes: "*" row_level: diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/security_context_test.js b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/security_context_test.js index 9b674b9a9934d..21ed7a19e9668 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/security_context_test.js +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/security_context_test.js @@ -96,7 +96,7 @@ cube('sc_ua_mask_test', { accessPolicy: [ { - role: '*', + group: '*', memberLevel: { includes: [], }, @@ -133,7 +133,7 @@ cube('sc_cube_mask_test', { accessPolicy: [ { - role: '*', + group: '*', memberLevel: { includes: [], }, @@ -181,7 +181,7 @@ cube('sc_joined_mask_test', { accessPolicy: [ { - role: '*', + group: '*', memberLevel: { includes: [], }, @@ -215,7 +215,7 @@ cube('sc_groups_shorthand_test', { accessPolicy: [ { - role: '*', + group: '*', rowLevel: { filters: [{ member: 'product_id', diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/users.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/users.yaml index 7904a2199dee2..40ec9ecc80475 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/users.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/users.yaml @@ -18,13 +18,13 @@ cubes: primary_key: true access_policy: - - role: "*" + - group: "*" row_level: filters: - member: "{CUBE}.city" operator: equals values: ["{ security_context.auth.userAttributes.city }"] - - role: admin + - group: admin conditions: # This thing will fail if there's no auth info in the context # Unfortunately, as of now, there's no way to write more complex expressions diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/views/users.js b/packages/cubejs-testing/birdbox-fixtures/rbac/model/views/users.js index 1c9488769f092..b0260e0f6c3df 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/views/users.js +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/views/users.js @@ -4,7 +4,7 @@ view('users_view', { includes: '*', }], accessPolicy: [{ - role: '*', + group: '*', rowLevel: { filters: [{ member: 'id', diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/views/views.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/views/views.yaml index 93401083bfb88..24c35b2892cfb 100644 --- a/packages/cubejs-testing/birdbox-fixtures/rbac/model/views/views.yaml +++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/views/views.yaml @@ -4,7 +4,7 @@ views: - join_path: line_items includes: "*" access_policy: - - role: "*" + - group: "*" row_level: filters: - member: "${CUBE}.price_dim" @@ -30,14 +30,14 @@ views: - join_path: orders includes: "*" access_policy: - - role: admin + - group: admin member_level: includes: "*" row_level: allow_all: true # Two-layer row-level filtering: the underlying `orders` cube restricts rows - # to id IN {1, 10, 11} (role "*" → id = 1, role admin → id = 10 OR id = 11), + # to id IN {1, 10, 11} (group "*" → id = 1, group admin → id = 10 OR id = 11), # while this view adds its own row filter id < 11. A row must satisfy BOTH # the cube policy AND the view policy, so the result is id IN {1, 10}. - name: orders_two_layer_test @@ -45,7 +45,7 @@ views: - join_path: orders includes: "*" access_policy: - - role: "*" + - group: "*" member_level: includes: "*" row_level: diff --git a/packages/cubejs-testing/test/smoke-rbac-graphql.test.ts b/packages/cubejs-testing/test/smoke-rbac-graphql.test.ts index 3d74ea33a2e43..d163135290182 100644 --- a/packages/cubejs-testing/test/smoke-rbac-graphql.test.ts +++ b/packages/cubejs-testing/test/smoke-rbac-graphql.test.ts @@ -34,9 +34,9 @@ describe('GraphQL Schema Caching and RBAC', () => { await birdbox.stop(); }, JEST_AFTER_ALL_DEFAULT_TIMEOUT); - async function graphqlRequest(role: string, query: string): Promise { + async function graphqlRequest(group: string, query: string): Promise { const token = sign({ - auth: { roles: [role] }, + auth: { groups: [group] }, }, DEFAULT_CONFIG.CUBEJS_API_SECRET, { expiresIn: '1h' }); const baseUrl = birdbox.configuration.apiUrl.replace('/cubejs-api/v1', ''); @@ -51,7 +51,7 @@ describe('GraphQL Schema Caching and RBAC', () => { return res.json(); } - test('all roles see the same unfiltered schema', async () => { + test('all groups see the same unfiltered schema', async () => { const introspectionQuery = '{ __type(name: "OrdersMembers") { fields { name } } }'; const resultA = await graphqlRequest('tenant-a', introspectionQuery); @@ -106,7 +106,7 @@ describe('GraphQL Schema Caching and RBAC', () => { expect(restrictedResult.errors[0].message).toContain('You requested hidden member'); }); - test('default role cannot query any fields - complete denial returns errors', async () => { + test('default group cannot query any fields - complete denial returns errors', async () => { const result1 = await graphqlRequest('default', `{ cube(where: { orders: {} }) { orders { internalCode } diff --git a/packages/cubejs-testing/test/smoke-rbac.test.ts b/packages/cubejs-testing/test/smoke-rbac.test.ts index ff38e5b2549e0..e11e3b1807316 100644 --- a/packages/cubejs-testing/test/smoke-rbac.test.ts +++ b/packages/cubejs-testing/test/smoke-rbac.test.ts @@ -20,7 +20,6 @@ const DEFAULT_API_TOKEN = sign({ auth: { username: 'nobody', userAttributes: {}, - roles: [], }, }, DEFAULT_CONFIG.CUBEJS_API_SECRET, { expiresIn: '2 days' @@ -149,7 +148,7 @@ describe('Cube RBAC Engine', () => { test('row-level filters from cube AND view layers are both applied', async () => { // The underlying `orders` cube policy restricts rows to id IN {1, 10, 11} - // (role "*" → id = 1, role admin → id = 10 OR id = 11). The view adds its + // (group "*" → id = 1, group admin → id = 10 OR id = 11). The view adds its // own row filter id < 11. Both layers must apply (AND), so the visible ids // are the intersection: {1, 10}. const res = await connection.query('SELECT id FROM orders_two_layer_test ORDER BY id'); @@ -302,8 +301,8 @@ describe('Cube RBAC Engine', () => { /** * Two-dimensional policy overlap test (matches diagram in CompilerApi.ts:559-647) * - * Policy 1 (role "*"): covers members a, b, id with row filter R1 (id < 500) - * Policy 2 (role "policy2_role"): covers members b, c, id with row filter R2 (id >= 500) + * Policy 1 (group "*"): covers members a, b, id with row filter R1 (id < 500) + * Policy 2 (group "policy2_group"): covers members b, c, id with row filter R2 (id >= 500) * * Members * ^ @@ -321,7 +320,7 @@ describe('Cube RBAC Engine', () => { let connection: PgClient; beforeAll(async () => { - // User has policy2_role, so both Policy 1 (*) and Policy 2 apply + // User is in group policy2_group, so both Policy 1 (*) and Policy 2 apply connection = await createPostgresClient('policy_test', 'policy_test_password'); }); @@ -447,9 +446,9 @@ describe('Cube RBAC Engine', () => { * - count_d measure: mask with 34567 * * Three user profiles: - * - masking_viewer: role "*" only → all members masked (memberLevel includes=[]) - * - masking_full: has masking_full_access role → full access to all members - * - masking_partial: has masking_partial role → id, public_dim, total_quantity unmasked; rest masked + * - masking_viewer: group "*" only → all members masked (memberLevel includes=[]) + * - masking_full: has masking_full_access group → full access to all members + * - masking_partial: has masking_partial group → id, public_dim, total_quantity unmasked; rest masked */ describe('RBAC data masking via SQL API (masking_viewer)', () => { let connection: PgClient; @@ -555,10 +554,10 @@ describe('Cube RBAC Engine', () => { * Rows matching the filter see unmasked values; other rows see masked values. * * conditional_masking_test cube: - * - role "*": member_level includes=[], member_masking includes="*" - * - role "conditional_mask_role": member_level includes="*", row_level filter product_id <= 3 + * - group "*": member_level includes=[], member_masking includes="*" + * - group "conditional_mask_group": member_level includes="*", row_level filter product_id <= 3 * - * For conditional_mask_user (role: conditional_mask_role): + * For conditional_mask_user (group: conditional_mask_group): * - product_id dimension: rows with product_id <= 3 show real value, others show masked (-1 for price) */ describe('RBAC conditional masking with row-level filters via SQL API', () => { @@ -588,7 +587,7 @@ describe('Cube RBAC Engine', () => { } }); - // Smoke test: only one filter policy matches (conditional_mask_role). For an + // Smoke test: only one filter policy matches (conditional_mask_group). For an // aggregate measure (total_price), a per-row CASE WHEN over the row filter would // reference product_id at row grain while the measure is aggregated. Since // product_id is not in the GROUP BY, the conditional CASE must NOT be triggered — @@ -655,10 +654,10 @@ describe('Cube RBAC Engine', () => { /** * Multiple conditional policies use OR across policies: - * - role "conditional_mask_role": product_id <= 3 - * - role "conditional_mask_role_extra": product_id = 5 + * - group "conditional_mask_group": product_id <= 3 + * - group "conditional_mask_group_extra": product_id = 5 * - * For conditional_mask_multi_user (both roles): + * For conditional_mask_multi_user (both groups): * Unmasked when product_id <= 3 OR product_id = 5, masked otherwise. */ describe('RBAC conditional masking with multiple policies (OR across policies)', () => { @@ -772,7 +771,7 @@ describe('Cube RBAC Engine', () => { await connection.end(); }, JEST_AFTER_ALL_DEFAULT_TIMEOUT); - test('masking_view_masked returns masked values for default role', async () => { + test('masking_view_masked returns masked values for default group', async () => { const res = await connection.query('SELECT * FROM masking_view_masked LIMIT 5'); expect(res.rows.length).toBeGreaterThan(0); for (const row of res.rows) { @@ -783,7 +782,7 @@ describe('Cube RBAC Engine', () => { } }); - test('masking_view_over_hidden_cube returns masked values for default role', async () => { + test('masking_view_over_hidden_cube returns masked values for default group', async () => { const res = await connection.query('SELECT * FROM masking_view_over_hidden_cube LIMIT 5'); expect(res.rows.length).toBeGreaterThan(0); for (const row of res.rows) { @@ -806,7 +805,7 @@ describe('Cube RBAC Engine', () => { await connection.end(); }, JEST_AFTER_ALL_DEFAULT_TIMEOUT); - test('masking_view_masked returns real values for masking_full_access role', async () => { + test('masking_view_masked returns real values for masking_full_access group', async () => { const res = await connection.query('SELECT * FROM masking_view_masked LIMIT 5'); expect(res.rows.length).toBeGreaterThan(0); for (const row of res.rows) { @@ -815,8 +814,8 @@ describe('Cube RBAC Engine', () => { } }); - test('masking_view_over_hidden_cube returns real values for masking_full_access role', async () => { - // The underlying cube hides all members, but masking_full_access role + test('masking_view_over_hidden_cube returns real values for masking_full_access group', async () => { + // The underlying cube hides all members, but masking_full_access group // gets full access through the view's own policy. const res = await connection.query('SELECT * FROM masking_view_over_hidden_cube LIMIT 5'); expect(res.rows.length).toBeGreaterThan(0); @@ -836,7 +835,6 @@ describe('Cube RBAC Engine', () => { auth: { username: 'masking_viewer', userAttributes: {}, - roles: [], }, }, DEFAULT_CONFIG.CUBEJS_API_SECRET, { expiresIn: '2 days' @@ -846,7 +844,7 @@ describe('Cube RBAC Engine', () => { auth: { username: 'masking_full', userAttributes: {}, - roles: ['masking_full_access'], + groups: ['masking_full_access'], }, }, DEFAULT_CONFIG.CUBEJS_API_SECRET, { expiresIn: '2 days' @@ -856,7 +854,7 @@ describe('Cube RBAC Engine', () => { auth: { username: 'masking_partial', userAttributes: {}, - roles: ['masking_partial'], + groups: ['masking_partial'], }, }, DEFAULT_CONFIG.CUBEJS_API_SECRET, { expiresIn: '2 days' @@ -992,7 +990,7 @@ describe('Cube RBAC Engine', () => { test('view: masking_view — cube masking still applied through view', async () => { // masking_view grants full access at view level, but the underlying - // cube masks all members for role "*". Masking follows RLS pattern. + // cube masks all members for group "*". Masking follows RLS pattern. const result = await maskingViewerClient.load({ measures: ['masking_view.count'], dimensions: ['masking_view.secret_number'], @@ -1166,7 +1164,6 @@ describe('Cube RBAC Engine', () => { auth: { username: 'sc_test', userAttributes: {}, - roles: [], groups: [], }, }, DEFAULT_CONFIG.CUBEJS_API_SECRET, { @@ -1401,7 +1398,7 @@ describe('Cube RBAC Engine', () => { canHaveAdmin: true, minDefaultId: 10000, }, - roles: ['admin', 'ownder', 'hr'], + groups: ['admin'], }, }, DEFAULT_CONFIG.CUBEJS_API_SECRET, { expiresIn: '2 days' @@ -1611,7 +1608,6 @@ describe('Cube RBAC Engine [Tesseract]', () => { auth: { username: 'sc_test', userAttributes: {}, - roles: [], groups: [], }, }, DEFAULT_CONFIG.CUBEJS_API_SECRET, { From f91a23728614dde9b9dc28b4e2a4662439670428 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 11 Jun 2026 18:54:28 +0200 Subject: [PATCH 06/24] feat(native): Initial support for Python 3.13 (#9930) --- .github/workflows/drivers-tests.yml | 2 +- .github/workflows/master.yml | 2 +- .github/workflows/publish.yml | 10 ++-- .github/workflows/push.yml | 4 +- .github/workflows/rust-cubesql.yml | 9 ++- .github/workflows/rust-cubestore-master.yml | 4 +- .github/workflows/rust-cubestore.yml | 4 +- packages/cubejs-backend-native/.gitignore | 3 +- packages/cubejs-backend-native/Cargo.lock | 54 ++++++++++-------- packages/cubejs-backend-native/Cargo.toml | 9 +-- packages/cubejs-backend-native/package.json | 1 + .../cubejs-backend-native/src/cross/clrepr.rs | 8 ++- .../src/cross/clrepr_python.rs | 54 +++++++++++------- .../src/cross/py_in_js.rs | 4 +- .../src/python/cube_config.rs | 7 ++- .../cubejs-backend-native/src/python/entry.rs | 57 +++++++++++-------- .../src/python/neon_py.rs | 2 +- .../src/python/runtime.rs | 23 ++++---- .../cubejs-backend-native/src/python/utils.rs | 12 ++-- .../src/template/mj_value/python.rs | 9 +-- rust/cubestore/Cross.toml | 6 +- 21 files changed, 160 insertions(+), 124 deletions(-) diff --git a/.github/workflows/drivers-tests.yml b/.github/workflows/drivers-tests.yml index 8c5825bb1ad91..67db218a8567c 100644 --- a/.github/workflows/drivers-tests.yml +++ b/.github/workflows/drivers-tests.yml @@ -103,7 +103,7 @@ jobs: target: [ "x86_64-unknown-linux-gnu" ] fail-fast: false container: - image: cubejs/rust-cross:${{ matrix.target }}-15082024 + image: cubejs/rust-cross:${{ matrix.target }}-31072025 steps: - name: Checkout diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index b58f3b75adde8..f1977a9a2d00d 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -45,7 +45,7 @@ jobs: timeout-minutes: 60 name: Build Linux Native backend for Dev image container: - image: cubejs/rust-cross:x86_64-unknown-linux-gnu-15082024-python-3.11 + image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025-python-3.11 steps: - name: Checkout diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a78142e6bfd52..4b9dc62ac1101 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -76,7 +76,7 @@ jobs: strategy: matrix: node-version: [22] - python-version: ["3.9", "3.10", "3.11", "3.12", "fallback"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "fallback"] target: ["x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu"] include: - target: x86_64-unknown-linux-gnu @@ -89,7 +89,7 @@ jobs: package_target_libc: glibc fail-fast: false container: - image: cubejs/rust-cross:${{ matrix.target }}-15082024${{ matrix.python-version != 'fallback' && format('-python-{0}', matrix.python-version) || '' }} + image: cubejs/rust-cross:${{ matrix.target }}-31072025${{ matrix.python-version != 'fallback' && format('-python-{0}', matrix.python-version) || '' }} permissions: contents: write steps: @@ -156,7 +156,7 @@ jobs: matrix: node-version: [22.x] target: ["x86_64-apple-darwin", "aarch64-apple-darwin"] - python-version: ["3.9", "3.10", "3.11", "3.12", "fallback"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "fallback"] include: - target: x86_64-apple-darwin os-version: macos-15-intel @@ -596,13 +596,13 @@ jobs: # Please use minimal possible version of ubuntu, because it produces constraint on glibc - os: ubuntu-22.04 target: x86_64-unknown-linux-gnu - image: cubejs/rust-cross:x86_64-unknown-linux-gnu-15082024 + image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025 executable_name: cubestored strip: true compress: false - os: ubuntu-22.04 target: x86_64-unknown-linux-musl - image: cubejs/rust-cross:x86_64-unknown-linux-musl-15082024 + image: cubejs/rust-cross:x86_64-unknown-linux-musl-31072025 executable_name: cubestored strip: true # cubestored: CantPackException: bad DT_HASH nbucket=0x344 len=0x1890 diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 43361a781b0d8..ed9029860fd5f 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -237,7 +237,7 @@ jobs: timeout-minutes: 60 if: (needs['latest-tag-sha'].outputs.sha != github.sha) container: - image: cubejs/rust-cross:x86_64-unknown-linux-gnu-15082024 + image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025 steps: - name: Checkout uses: actions/checkout@v4 @@ -276,7 +276,7 @@ jobs: python-version: [ 3.11 ] fail-fast: false container: - image: cubejs/rust-cross:x86_64-unknown-linux-gnu-15082024-python-${{ matrix.python-version }} + image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025-python-${{ matrix.python-version }} steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/rust-cubesql.yml b/.github/workflows/rust-cubesql.yml index 860285a48a759..b3dbf5c3787ac 100644 --- a/.github/workflows/rust-cubesql.yml +++ b/.github/workflows/rust-cubesql.yml @@ -22,7 +22,7 @@ jobs: timeout-minutes: 20 name: Check fmt/clippy container: - image: cubejs/rust-cross:x86_64-unknown-linux-gnu-15082024 + image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025 steps: - name: Checkout @@ -122,7 +122,7 @@ jobs: # Current used version + 1 LTS # TODO: Add 24 after it's been released (don't forget to uncomment excludes below!) node-version: [22] - python-version: ["3.9", "3.10", "3.11", "3.12", "fallback"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "fallback"] target: ["x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu"] # minimize number of jobs exclude: @@ -135,7 +135,7 @@ jobs: target: "aarch64-unknown-linux-gnu" fail-fast: false container: - image: cubejs/rust-cross:${{ matrix.target }}-15082024${{ matrix.python-version != 'fallback' && format('-python-{0}', matrix.python-version) || '' }} + image: cubejs/rust-cross:${{ matrix.target }}-31072025${{ matrix.python-version != 'fallback' && format('-python-{0}', matrix.python-version) || '' }} steps: - name: Checkout @@ -240,6 +240,9 @@ jobs: - target: x86_64-apple-darwin os-version: macos-15-intel python-version: "3.12" + - target: x86_64-apple-darwin + os-version: macos-15-intel + python-version: "3.13" - target: x86_64-apple-darwin os-version: macos-15-intel python-version: "fallback" diff --git a/.github/workflows/rust-cubestore-master.yml b/.github/workflows/rust-cubestore-master.yml index b4deccbab7e6a..d80cb7a336fa5 100644 --- a/.github/workflows/rust-cubestore-master.yml +++ b/.github/workflows/rust-cubestore-master.yml @@ -264,13 +264,13 @@ jobs: # Please use minimal possible version of ubuntu, because it produces constraint on glibc - os: ubuntu-22.04 target: x86_64-unknown-linux-gnu - image: cubejs/rust-cross:x86_64-unknown-linux-gnu-15082024 + image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025 executable_name: cubestored strip: true compress: false - os: ubuntu-22.04 target: x86_64-unknown-linux-musl - image: cubejs/rust-cross:x86_64-unknown-linux-musl-15082024 + image: cubejs/rust-cross:x86_64-unknown-linux-musl-31072025 executable_name: cubestored strip: true # cubestored: CantPackException: bad DT_HASH nbucket=0x344 len=0x1890 diff --git a/.github/workflows/rust-cubestore.yml b/.github/workflows/rust-cubestore.yml index c76e7e8c0f444..4e15b958e2ffb 100644 --- a/.github/workflows/rust-cubestore.yml +++ b/.github/workflows/rust-cubestore.yml @@ -203,13 +203,13 @@ jobs: # Please use minimal possible version of ubuntu, because it produces constraint on glibc - os: ubuntu-22.04 target: x86_64-unknown-linux-gnu - image: cubejs/rust-cross:x86_64-unknown-linux-gnu-15082024 + image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025 executable_name: cubestored strip: true compress: false - os: ubuntu-22.04 target: x86_64-unknown-linux-musl - image: cubejs/rust-cross:x86_64-unknown-linux-musl-15082024 + image: cubejs/rust-cross:x86_64-unknown-linux-musl-31072025 executable_name: cubestored strip: true # cubestored: CantPackException: bad DT_HASH nbucket=0x344 len=0x1890 diff --git a/packages/cubejs-backend-native/.gitignore b/packages/cubejs-backend-native/.gitignore index 67cbee8dc09f3..214ec7423edc4 100644 --- a/packages/cubejs-backend-native/.gitignore +++ b/packages/cubejs-backend-native/.gitignore @@ -7,4 +7,5 @@ index.node **/.DS_Store npm-debug.log benchmarks/result.txt -test/__pycache__/ \ No newline at end of file +test/__pycache__/ +test/subdir_for_test/__pycache__/ diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index b52628243878d..945f3e8f04858 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -742,7 +742,7 @@ dependencies = [ "neon", "once_cell", "pyo3", - "pyo3-asyncio", + "pyo3-async-runtimes", "serde", "serde_json", "simple_logger", @@ -1358,6 +1358,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -2508,15 +2514,16 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.20.0" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b" +checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", - "parking_lot", + "once_cell", + "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", @@ -2524,35 +2531,35 @@ dependencies = [ ] [[package]] -name = "pyo3-asyncio" -version = "0.20.0" +name = "pyo3-async-runtimes" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea6b68e93db3622f3bb3bf363246cf948ed5375afe7abff98ccbdd50b184995" +checksum = "2529f0be73ffd2be0cc43c013a640796558aa12d7ca0aab5cc14f375b4733031" dependencies = [ "futures", "once_cell", "pin-project-lite", "pyo3", - "pyo3-asyncio-macros", + "pyo3-async-runtimes-macros", "tokio", ] [[package]] -name = "pyo3-asyncio-macros" -version = "0.20.0" +name = "pyo3-async-runtimes-macros" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c467178e1da6252c95c29ecf898b133f742e9181dca5def15dc24e19d45a39" +checksum = "22c26fd8e9fc19f53f0c1e00bf61471de6789f7eb263056f7f944a9cceb5823e" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.98", ] [[package]] name = "pyo3-build-config" -version = "0.20.0" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5" +checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38" dependencies = [ "once_cell", "target-lexicon", @@ -2560,9 +2567,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.20.0" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b" +checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636" dependencies = [ "libc", "pyo3-build-config", @@ -2570,9 +2577,9 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.20.0" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b" +checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453" dependencies = [ "proc-macro2", "pyo3-macros-backend", @@ -2582,12 +2589,13 @@ dependencies = [ [[package]] name = "pyo3-macros-backend" -version = "0.20.0" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424" +checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", + "pyo3-build-config", "quote", "syn 2.0.98", ] @@ -3365,9 +3373,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.12" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" diff --git a/packages/cubejs-backend-native/Cargo.toml b/packages/cubejs-backend-native/Cargo.toml index 5801a68f9d259..60e9defdcfa8b 100644 --- a/packages/cubejs-backend-native/Cargo.toml +++ b/packages/cubejs-backend-native/Cargo.toml @@ -34,11 +34,8 @@ log-reroute = "0.1" minijinja = { version = "1", features = ["json", "loader"] } once_cell = "1.10" # python -pyo3 = { version = "0.20.0", features = [], optional = true } -pyo3-asyncio = { version = "0.20.0", features = [ - "tokio-runtime", - "attributes", -], optional = true } +pyo3 = { version = "0.22.6", optional = true } +pyo3-async-runtimes = { version = "0.22.0", features = ["tokio-runtime", "attributes"], optional = true } serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.127" simple_logger = "1.7.0" @@ -55,7 +52,7 @@ features = ["napi-1", "napi-4", "napi-6", "futures"] default = ["neon-entrypoint", "async-log"] neon-debug = [] neon-entrypoint = [] -python = ["pyo3", "pyo3-asyncio"] +python = ["pyo3", "pyo3-async-runtimes"] async-log = ["log_nonblock"] # Exposes `__testBridge_*` endpoints used by the bridge regression test # harness. Off by default — never enable in production builds. diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json index 93881e829f0ae..e7a1916d240e8 100644 --- a/packages/cubejs-backend-native/package.json +++ b/packages/cubejs-backend-native/package.json @@ -61,6 +61,7 @@ "value": [ "libpython", [ + "3.13", "3.12", "3.11", "3.10", diff --git a/packages/cubejs-backend-native/src/cross/clrepr.rs b/packages/cubejs-backend-native/src/cross/clrepr.rs index 1326c7b9c780c..2c30694dde6a4 100644 --- a/packages/cubejs-backend-native/src/cross/clrepr.rs +++ b/packages/cubejs-backend-native/src/cross/clrepr.rs @@ -10,6 +10,8 @@ use neon::prelude::*; use neon::result::Throw; use neon::types::JsDate; #[cfg(feature = "python")] +use pyo3::Python; +#[cfg(feature = "python")] use std::cell::RefCell; use std::collections::hash_map::{IntoIter, Iter, Keys}; use std::collections::HashMap; @@ -96,9 +98,9 @@ pub enum StringType { Safe, } -/// Cross language representation is abstraction to transfer values between +/// Cross-language representation is an abstraction to transfer values between /// JavaScript and Python across Rust. Converting between two different languages requires -/// to use Context which is available on the call (one for python and one for js), which result as +/// using Context which is available on the call (one for python and one for js), which results as /// blocking. #[derive(Debug, Clone)] pub enum CLRepr { @@ -240,7 +242,7 @@ impl CLRepr { #[cfg(feature = "python")] if from.is_a::(cx) { let ref_wrap = from.downcast_or_throw::(cx)?; - let fun = ref_wrap.borrow().get_fun().clone(); + let fun = Python::with_gil(|py| ref_wrap.borrow().get_fun().clone_ref(py)); return Ok(CLRepr::PythonRef(PythonRef::PyFunction(fun))); } diff --git a/packages/cubejs-backend-native/src/cross/clrepr_python.rs b/packages/cubejs-backend-native/src/cross/clrepr_python.rs index 387aa42eb1025..34e2a8301ba54 100644 --- a/packages/cubejs-backend-native/src/cross/clrepr_python.rs +++ b/packages/cubejs-backend-native/src/cross/clrepr_python.rs @@ -3,12 +3,14 @@ use crate::cross::{CLRepr, CLReprObjectKind, StringType}; use crate::python::utils::PyAnyHelpers; use pyo3::exceptions::{PyException, PyNotImplementedError, PyTypeError}; use pyo3::types::{ - PyBool, PyComplex, PyDate, PyDateTime, PyDelta, PyDict, PyFloat, PyFrame, PyFrozenSet, - PyFunction, PyInt, PyList, PySequence, PySet, PyString, PyTraceback, PyTuple, + PyAnyMethods, PyBool, PyBoolMethods, PyComplex, PyDate, PyDateTime, PyDelta, PyDict, + PyDictMethods, PyFloat, PyFloatMethods, PyFrame, PyFrozenSet, PyFunction, PyInt, PyList, + PyListMethods, PySequence, PySet, PySetMethods, PyString, PyTraceback, PyTuple, PyTupleMethods, + PyTypeMethods, }; -use pyo3::{Py, PyAny, PyErr, PyObject, Python, ToPyObject}; +use pyo3::{Bound, Py, PyAny, PyErr, PyObject, Python, ToPyObject}; -#[derive(Debug, Clone)] +#[derive(Debug)] pub enum PythonRef { PyObject(PyObject), PyFunction(Py), @@ -17,9 +19,19 @@ pub enum PythonRef { PyExternalFunction(Py), } +impl Clone for PythonRef { + fn clone(&self) -> Self { + Python::with_gil(|py| match self { + PythonRef::PyObject(obj) => PythonRef::PyObject(obj.clone_ref(py)), + PythonRef::PyFunction(fun) => PythonRef::PyFunction(fun.clone_ref(py)), + PythonRef::PyExternalFunction(fun) => PythonRef::PyExternalFunction(fun.clone_ref(py)), + }) + } +} + impl CLRepr { /// Convert python value to CLRepr - pub fn from_python_ref(v: &PyAny) -> Result { + pub fn from_python_ref(v: &Bound<'_, PyAny>) -> Result { if v.is_none() { return Ok(Self::Null); } @@ -31,7 +43,7 @@ impl CLRepr { StringType::Normal }; - Self::String(v.to_string(), string_type) + Self::String(v.str()?.to_string(), string_type) } else if v.get_type().is_subclass_of::()? { Self::Bool(v.downcast::()?.is_true()) } else if v.get_type().is_subclass_of::()? { @@ -48,7 +60,7 @@ impl CLRepr { if k.get_type().is_subclass_of::()? { let key_str = k.downcast::()?; - obj.insert(key_str.to_string(), Self::from_python_ref(v)?); + obj.insert(key_str.to_string(), Self::from_python_ref(&v)?); } } @@ -58,7 +70,7 @@ impl CLRepr { let mut r = Vec::with_capacity(l.len()); for v in l.iter() { - r.push(Self::from_python_ref(v)?); + r.push(Self::from_python_ref(&v)?); } Self::Array(r) @@ -67,7 +79,7 @@ impl CLRepr { let mut r = Vec::with_capacity(l.len()); for v in l.iter() { - r.push(Self::from_python_ref(v)?); + r.push(Self::from_python_ref(&v)?); } Self::Array(r) @@ -76,12 +88,12 @@ impl CLRepr { let mut r = Vec::with_capacity(l.len()); for v in l.iter() { - r.push(Self::from_python_ref(v)?); + r.push(Self::from_python_ref(&v)?); } Self::Tuple(r) } else if v.get_type().is_subclass_of::()? { - let fun: Py = v.downcast::()?.into(); + let fun: Py = v.downcast::()?.clone().unbind(); Self::PythonRef(PythonRef::PyFunction(fun)) } else if v.get_type().is_subclass_of::()? { @@ -140,12 +152,12 @@ impl CLRepr { ))); } else { // Fallback to PyObject, it will lead to throw error in the JS side - Self::PythonRef(PythonRef::PyObject(v.into())) + Self::PythonRef(PythonRef::PyObject(v.clone().unbind())) }) } - fn into_py_dict_impl(obj: CLReprObject, py: Python<'_>) -> Result<&PyDict, PyErr> { - let r = PyDict::new(py); + fn into_py_dict_impl(obj: CLReprObject, py: Python<'_>) -> Result, PyErr> { + let r = PyDict::new_bound(py); for (k, v) in obj.into_iter() { r.set_item(k, Self::into_py_impl(v, py)?)?; @@ -156,11 +168,11 @@ impl CLRepr { fn into_py_impl(from: CLRepr, py: Python) -> Result { Ok(match from { - CLRepr::String(v, _) => PyString::new(py, &v).to_object(py), - CLRepr::Bool(v) => PyBool::new(py, v).to_object(py), - CLRepr::Float(v) => PyFloat::new(py, v).to_object(py), + CLRepr::String(v, _) => PyString::new_bound(py, &v).to_object(py), + CLRepr::Bool(v) => PyBool::new_bound(py, v).to_object(py), + CLRepr::Float(v) => PyFloat::new_bound(py, v).to_object(py), CLRepr::Int(v) => { - let py_int: &PyInt = unsafe { py.from_owned_ptr(pyo3::ffi::PyLong_FromLong(v)) }; + let py_int = unsafe { Bound::from_owned_ptr(py, pyo3::ffi::PyLong_FromLong(v)) }; py_int.to_object(py) } @@ -171,7 +183,7 @@ impl CLRepr { elements.push(Self::into_py_impl(el, py)?); } - PyList::new(py, elements).to_object(py) + PyList::new_bound(py, elements).to_object(py) } CLRepr::Tuple(arr) => { let mut elements = Vec::with_capacity(arr.len()); @@ -180,7 +192,7 @@ impl CLRepr { elements.push(Self::into_py_impl(el, py)?); } - PyTuple::new(py, elements).to_object(py) + PyTuple::new_bound(py, elements).to_object(py) } CLRepr::Object(obj) => { let r = Self::into_py_dict_impl(obj, py)?; @@ -213,7 +225,7 @@ impl CLRepr { }) } - pub fn into_py_dict(self, py: Python<'_>) -> Result<&PyDict, PyErr> { + pub fn into_py_dict(self, py: Python<'_>) -> Result, PyErr> { Ok(match self { CLRepr::Object(obj) => Self::into_py_dict_impl(obj, py)?, other => { diff --git a/packages/cubejs-backend-native/src/cross/py_in_js.rs b/packages/cubejs-backend-native/src/cross/py_in_js.rs index 2d1626d3f3060..fad7fe2dbd40b 100644 --- a/packages/cubejs-backend-native/src/cross/py_in_js.rs +++ b/packages/cubejs-backend-native/src/cross/py_in_js.rs @@ -2,7 +2,7 @@ use crate::cross::CLRepr; use crate::python::runtime::py_runtime; use neon::prelude::*; use pyo3::types::PyFunction; -use pyo3::Py; +use pyo3::{Py, Python}; use std::cell::RefCell; pub struct JsPyFunctionWrapper { @@ -43,7 +43,7 @@ pub fn cl_repr_py_function_wrapper(mut cx: FunctionContext) -> JsResult r, Err(err) => return cx.throw_error(format!("Unable to init python runtime: {:?}", err)), diff --git a/packages/cubejs-backend-native/src/python/cube_config.rs b/packages/cubejs-backend-native/src/python/cube_config.rs index 791fd62a70b68..d5cc91ff9a086 100644 --- a/packages/cubejs-backend-native/src/python/cube_config.rs +++ b/packages/cubejs-backend-native/src/python/cube_config.rs @@ -1,6 +1,7 @@ use convert_case::{Case, Casing}; use neon::prelude::*; -use pyo3::{PyAny, PyResult}; +use pyo3::types::PyAnyMethods; +use pyo3::{Bound, PyAny, PyResult}; use crate::cross::{CLRepr, CLReprObject, CLReprObjectKind}; @@ -68,10 +69,10 @@ impl CubeConfigPy { ] } - pub fn attr(&mut self, config_module: &PyAny, key: &str) -> PyResult<()> { + pub fn attr(&mut self, config_module: &Bound<'_, PyAny>, key: &str) -> PyResult<()> { let v = config_module.getattr(key)?; if !v.is_none() { - let value = CLRepr::from_python_ref(v)?; + let value = CLRepr::from_python_ref(&v)?; self.properties.insert(key.to_case(Case::Camel), value); }; diff --git a/packages/cubejs-backend-native/src/python/entry.rs b/packages/cubejs-backend-native/src/python/entry.rs index 6305a0ab77502..161a75b9f6c0b 100644 --- a/packages/cubejs-backend-native/src/python/entry.rs +++ b/packages/cubejs-backend-native/src/python/entry.rs @@ -6,18 +6,19 @@ use crate::python::runtime::py_runtime_init; use neon::prelude::*; use pyo3::exceptions::PyException; use pyo3::prelude::*; -use pyo3::types::{PyDict, PyFunction, PyList, PyString, PyTuple}; +use pyo3::types::{PyAnyMethods, PyDict, PyFunction, PyList, PyString, PyTuple}; use std::path::Path; fn extend_sys_path(py: Python, file_name: &String) -> PyResult<()> { - let sys_path = py.import("sys")?.getattr("path")?.downcast::()?; + let binding = py.import_bound("sys")?.getattr("path")?; + let sys_path = binding.downcast::()?; let config_dir = Path::new(&file_name) .parent() .unwrap_or_else(|| Path::new(".")); let config_dir_str = config_dir.to_str().unwrap_or("."); - sys_path.insert(0, PyString::new(py, config_dir_str))?; + sys_path.insert(0, PyString::new_bound(py, config_dir_str))?; Ok(()) } @@ -40,9 +41,10 @@ fn python_load_config(mut cx: FunctionContext) -> JsResult { env!("CARGO_MANIFEST_DIR"), "/python/cube/src/__init__.py" )); - PyModule::from_code(py, cube_code, "__init__.py", "cube")?; + PyModule::from_code_bound(py, cube_code, "__init__.py", "cube")?; - let config_module = PyModule::from_code(py, &file_content_arg, &options_file_name, "")?; + let config_module = + PyModule::from_code_bound(py, &file_content_arg, &options_file_name, "")?; let settings_py = if config_module.hasattr("config")? { config_module.getattr("config")? } else { @@ -60,7 +62,7 @@ fn python_load_config(mut cx: FunctionContext) -> JsResult { let mut cube_conf = CubeConfigPy::new(); for attr_name in cube_conf.get_attrs() { - cube_conf.attr(settings_py, attr_name)?; + cube_conf.attr(&settings_py, attr_name)?; } Ok(cube_conf) @@ -90,9 +92,9 @@ fn python_load_model(mut cx: FunctionContext) -> JsResult { env!("CARGO_MANIFEST_DIR"), "/python/cube/src/__init__.py" )); - PyModule::from_code(py, cube_code, "__init__.py", "cube")?; + PyModule::from_code_bound(py, cube_code, "__init__.py", "cube")?; - let model_module = PyModule::from_code(py, &model_content, &model_file_name, "")?; + let model_module = PyModule::from_code_bound(py, &model_content, &model_file_name, "")?; let mut collected_functions = CLReprObject::new(CLReprObjectKind::Object); let mut collected_variables = CLReprObject::new(CLReprObjectKind::Object); @@ -101,48 +103,55 @@ fn python_load_model(mut cx: FunctionContext) -> JsResult { if model_module.hasattr("template")? { let template = model_module.getattr("template")?; - let functions = template.getattr("functions")?.downcast::()?; + let functions_attr = template.getattr("functions")?; + let functions = functions_attr.downcast::()?; for (local_key, local_value) in functions.iter() { if local_value.is_instance_of::() { - let fun: Py = local_value.downcast::()?.into(); + let fun: Py = + local_value.downcast::()?.clone().unbind(); collected_functions.insert( - local_key.to_string(), + local_key.str()?.to_string(), CLRepr::PythonRef(PythonRef::PyExternalFunction(fun)), ); } } - let variables = template.getattr("variables")?.downcast::()?; + let variables_attr = template.getattr("variables")?; + let variables = variables_attr.downcast::()?; for (local_key, local_value) in variables.iter() { - collected_variables - .insert(local_key.to_string(), CLRepr::from_python_ref(local_value)?); + collected_variables.insert( + local_key.str()?.to_string(), + CLRepr::from_python_ref(&local_value)?, + ); } - let filters = template.getattr("filters")?.downcast::()?; + let filters_attr = template.getattr("filters")?; + let filters = filters_attr.downcast::()?; for (local_key, local_value) in filters.iter() { - let fun: Py = local_value.downcast::()?.into(); + let fun: Py = local_value.downcast::()?.clone().unbind(); collected_filters.insert( - local_key.to_string(), + local_key.str()?.to_string(), CLRepr::PythonRef(PythonRef::PyExternalFunction(fun)), ); } } else { // backward compatibility, was used in private preview, not as Public API // TODO: Remove after 1.4 - let inspect_module = py.import("inspect")?; + let inspect_module = py.import_bound("inspect")?; let args = (model_module, inspect_module.getattr("isfunction")?); - let functions_with_names = inspect_module - .call_method1("getmembers", args)? - .downcast::()?; + let getmembers_result = inspect_module.call_method1("getmembers", args)?; + let functions_with_names = getmembers_result.downcast::()?; for function_details in functions_with_names.iter() { let function_details = function_details.downcast::()?; - let fun_name = function_details.get_item(0)?.downcast::()?; - let fun = function_details.get_item(1)?.downcast::()?; + let fun_name_item = function_details.get_item(0)?; + let fun_name = fun_name_item.downcast::()?; + let fun_item = function_details.get_item(1)?; + let fun = fun_item.downcast::()?; let has_attr = fun.hasattr("cube_context_func")?; if has_attr { - let fun: Py = fun.into(); + let fun: Py = fun.clone().unbind(); collected_functions.insert( fun_name.to_string(), CLRepr::PythonRef(PythonRef::PyExternalFunction(fun)), diff --git a/packages/cubejs-backend-native/src/python/neon_py.rs b/packages/cubejs-backend-native/src/python/neon_py.rs index c2049195574f8..573583aff5cdf 100644 --- a/packages/cubejs-backend-native/src/python/neon_py.rs +++ b/packages/cubejs-backend-native/src/python/neon_py.rs @@ -5,7 +5,7 @@ pub(crate) fn format_python_error(py_err: PyErr) -> String { let err = format!("Python error: {}", py_err); let bt = Python::with_gil(move |py| -> PyResult> { - if let Some(trace_back) = py_err.traceback(py) { + if let Some(trace_back) = py_err.traceback_bound(py) { Ok(Some(trace_back.format()?)) } else { Ok(None) diff --git a/packages/cubejs-backend-native/src/python/runtime.rs b/packages/cubejs-backend-native/src/python/runtime.rs index 0746874a3510f..e8d4d9689faab 100644 --- a/packages/cubejs-backend-native/src/python/runtime.rs +++ b/packages/cubejs-backend-native/src/python/runtime.rs @@ -134,25 +134,26 @@ impl PyRuntime { let task_block = panic::AssertUnwindSafe(|| { Python::with_gil(move |py| -> PyResult { let mut prep_tuple = Vec::with_capacity(args.len()); - let mut py_kwargs = None; + let mut kwargs_dict_opt = None; for arg in args { if arg.is_kwarg() { - py_kwargs = Some(arg.into_py_dict(py)?); + kwargs_dict_opt = Some(arg.into_py_dict(py)?); } else { prep_tuple.push(arg.into_py(py)?); } } - let py_args = PyTuple::new(py, prep_tuple); - let call_res = fun.call(py, py_args, py_kwargs)?; + let py_args = PyTuple::new_bound(py, prep_tuple); + let py_kwargs = kwargs_dict_opt.as_ref(); + let call_res = fun.call_bound(py, py_args, py_kwargs)?; if call_res.is_coroutine()? { - let fut = pyo3_asyncio::tokio::into_future(call_res.as_ref(py))?; + let fut = pyo3_async_runtimes::tokio::into_future(call_res.bind(py).clone())?; Ok(PyScheduledFunResult::Poll(Box::pin(fut))) } else { Ok(PyScheduledFunResult::Ready(CLRepr::from_python_ref( - call_res.as_ref(py), + call_res.bind(py), )?)) } }) @@ -203,7 +204,7 @@ impl PyRuntime { Python::with_gil(move |py| -> Result { let res = match fut_res { - Ok(r) => CLRepr::from_python_ref(r.as_ref(py)), + Ok(r) => CLRepr::from_python_ref(r.bind(py)), Err(err) => Err(err), }; @@ -261,12 +262,12 @@ impl PyRuntime { trace!("Initializing executor in a separate thread"); std::thread::spawn(|| { - pyo3_asyncio::tokio::get_runtime() - .block_on(pyo3_asyncio::tokio::re_exports::pending::<()>()) + pyo3_async_runtimes::tokio::get_runtime() + .block_on(pyo3_async_runtimes::tokio::re_exports::pending::<()>()) }); let res = Python::with_gil(|py| -> Result<(), PyErr> { - pyo3_asyncio::tokio::run(py, async move { + pyo3_async_runtimes::tokio::run(py, async move { loop { if let Some(task) = receiver.recv().await { trace!("New task"); @@ -302,7 +303,7 @@ pub fn py_runtime_init<'a, C: Context<'a>>( pyo3::prepare_freethreaded_python(); // it's safe to unwrap - pyo3_asyncio::tokio::init_with_runtime(runtime).unwrap(); + pyo3_async_runtimes::tokio::init_with_runtime(runtime).unwrap(); if PY_RUNTIME.set(PyRuntime::new(channel)).is_err() { cx.throw_error("Error on setting PyRuntime") diff --git a/packages/cubejs-backend-native/src/python/utils.rs b/packages/cubejs-backend-native/src/python/utils.rs index 83b9c1f0996a9..be9447f7dba2c 100644 --- a/packages/cubejs-backend-native/src/python/utils.rs +++ b/packages/cubejs-backend-native/src/python/utils.rs @@ -13,7 +13,7 @@ pub fn python_fn_call_sync(py_fun: &Py, arguments: Vec) -> P args_tuple.push(arg.into_py(py)?); } - let tuple = PyTuple::new(py, args_tuple); + let tuple = PyTuple::new_bound(py, args_tuple); let call_res = py_fun.call1(py, tuple)?; @@ -22,7 +22,7 @@ pub fn python_fn_call_sync(py_fun: &Py, arguments: Vec) -> P "Calling function with async response is not supported", )) } else { - CLRepr::from_python_ref(call_res.as_ref(py)) + CLRepr::from_python_ref(call_res.bind(py)) } }) } @@ -35,7 +35,7 @@ pub fn python_obj_call_sync(py_fun: &PyObject, arguments: Vec) -> PyResu args_tuple.push(arg.into_py(py)?); } - let tuple = PyTuple::new(py, args_tuple); + let tuple = PyTuple::new_bound(py, args_tuple); let call_res = py_fun.call1(py, tuple)?; @@ -44,7 +44,7 @@ pub fn python_obj_call_sync(py_fun: &PyObject, arguments: Vec) -> PyResu "Calling object with async response is not supported", )) } else { - CLRepr::from_python_ref(call_res.as_ref(py)) + CLRepr::from_python_ref(call_res.bind(py)) } }) } @@ -64,7 +64,7 @@ where args_tuple.push(arg.into_py(py)?); } - let tuple = PyTuple::new(py, args_tuple); + let tuple = PyTuple::new_bound(py, args_tuple); let call_res = py_fun.call_method1(py, name, tuple)?; @@ -73,7 +73,7 @@ where "Calling object method with async response is not supported", )) } else { - CLRepr::from_python_ref(call_res.as_ref(py)) + CLRepr::from_python_ref(call_res.bind(py)) } }) } diff --git a/packages/cubejs-backend-native/src/template/mj_value/python.rs b/packages/cubejs-backend-native/src/template/mj_value/python.rs index 510b121fa0c9a..54c6667561e58 100644 --- a/packages/cubejs-backend-native/src/template/mj_value/python.rs +++ b/packages/cubejs-backend-native/src/template/mj_value/python.rs @@ -8,7 +8,7 @@ use log::error; use minijinja as mj; use minijinja::value as mjv; use minijinja::value::{Object, ObjectKind, StructObject, Value}; -use pyo3::types::{PyDict, PyFunction}; +use pyo3::types::{PyDict, PyDictMethods, PyFunction}; use pyo3::{Py, PyObject, PyResult, Python}; use std::convert::TryInto; use std::sync::Arc; @@ -171,7 +171,7 @@ impl StructObject for JinjaPythonObject { let res = Python::with_gil(move |py| -> PyResult { let attr_name = obj_ref.getattr(py, name)?; - CLRepr::from_python_ref(attr_name.as_ref(py)) + CLRepr::from_python_ref(attr_name.bind(py)) }); match res { @@ -190,7 +190,7 @@ impl StructObject for JinjaPythonObject { Python::with_gil(|py| { let mut fields: Vec> = vec![]; - match obj_ref.downcast::(py) { + match obj_ref.downcast_bound::(py) { Ok(dict_ref) => { for key in dict_ref.keys() { fields.push(key.to_string().into()); @@ -254,7 +254,8 @@ impl Object for JinjaPythonFunction { ) })?; - let call_future = py_runtime.call_async(self.inner.clone(), arguments); + let call_future = + Python::with_gil(|py| py_runtime.call_async(self.inner.clone_ref(py), arguments)); let tokio = tokio_runtime().map_err(|err| { mj::Error::new( diff --git a/rust/cubestore/Cross.toml b/rust/cubestore/Cross.toml index 880787846bbc3..a1d340dccc35f 100644 --- a/rust/cubestore/Cross.toml +++ b/rust/cubestore/Cross.toml @@ -1,11 +1,11 @@ [target.x86_64-unknown-linux-gnu] -image = "cubejs/rust-cross:x86_64-unknown-linux-gnu-15082024" +image = "cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025" xargo = false [target.x86_64-unknown-linux-musl] -image = "cubejs/rust-cross:x86_64-unknown-linux-musl-15082024" +image = "cubejs/rust-cross:x86_64-unknown-linux-musl-31072025" xargo = false [target.aarch64-unknown-linux-gnu] -image = "cubejs/rust-cross:aarch64-unknown-linux-gnu-15082024" +image = "cubejs/rust-cross:aarch64-unknown-linux-gnu-31072025" xargo = false From 08a2a6b37efb450377383fbb0e5041fff106cff2 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 11 Jun 2026 19:29:34 +0200 Subject: [PATCH 07/24] feat(server-core)!: Remove deprecated dbType option (#11045) BREAKING CHANGE: CreateOptions.dbType has been removed. Use driverFactory instead. --- DEPRECATION.md | 10 +- .../reference/configuration/config.mdx | 31 ----- .../python/cube/src/__init__.py | 2 - .../src/python/cube_config.rs | 1 - .../cubejs-server-core/src/core/DevServer.ts | 2 +- .../src/core/OptsHandler.ts | 126 +++++------------- .../src/core/optionsValidate.ts | 1 - packages/cubejs-server-core/src/core/types.ts | 3 - .../test/unit/OptsHandler.test.ts | 105 ++------------- .../test/unit/index.test.ts | 83 +++--------- .../src/helpers/getCore.ts | 4 +- .../birdbox-fixtures/lambda/cube.js | 21 +-- .../birdbox-fixtures/multidb/cube.js | 35 +++-- 13 files changed, 97 insertions(+), 327 deletions(-) diff --git a/DEPRECATION.md b/DEPRECATION.md index e044ce1ec3869..6e26d8f15f812 100644 --- a/DEPRECATION.md +++ b/DEPRECATION.md @@ -52,7 +52,7 @@ features: | Removed | [Node.js 12](#nodejs-12) | v0.29.0 | v0.32.0 | | Deprecated | [`CUBEJS_EXTERNAL_DEFAULT` and `CUBEJS_SCHEDULED_REFRESH_DEFAULT`](#cubejs_external_default-and-cubejs_scheduled_refresh_default) | v0.30.0 | | | Deprecated | [Using external databases for pre-aggregations](#using-external-databases-for-pre-aggregations) | v0.30.0 | | -| Deprecated | [`dbType`](#dbtype) | v0.30.30 | | +| Removed | [`dbType`](#dbtype) | v0.30.30 | v1.7.0 | | Removed | [Serverless Deployments](#serverless-deployments) | v0.31.64 | v0.35.0 | | Removed | [Node.js 14](#nodejs-14) | v0.32.0 | v0.35.0 | | Removed | [Using Redis for in-memory cache and queue](#using-redis-for-in-memory-cache-and-queue) | v0.32.0 | v0.36.0 | @@ -312,9 +312,11 @@ recommend [using Cube Store as a solution][ref-caching-in-prod]. **Deprecated in Release: v0.30.30** -Using `dbType` is now deprecated, and we recommend using -[`driverFactory`][self-driver-factory] to return a `DriverConfig` object -instead. +**Removed in Release: v1.7.0** + +`dbType` has been removed. Passing `CreateOptions.dbType` now throws an error. +Use [`driverFactory`][self-driver-factory] to return a `DriverConfig` object +(`{ type, ... }`) instead, or set the `CUBEJS_DB_TYPE` environment variable. ### Serverless Deployments diff --git a/docs-mintlify/reference/configuration/config.mdx b/docs-mintlify/reference/configuration/config.mdx index 46bd74a9725c3..16121ac4fb150 100644 --- a/docs-mintlify/reference/configuration/config.mdx +++ b/docs-mintlify/reference/configuration/config.mdx @@ -1485,36 +1485,6 @@ module.exports = { -## Deprecated - -### `dbType` - - - -`dbType` is deprecated and will be removed in a future release. -Use [`driverFactory`][self-driver-factory] instead. - - - -Data source type. Called only once per [`appId`][self-opts-ctx-to-appid]. - -```javascript -module.exports = { - // string - dbType: 'snowflake', - - // function - dbType: ({ securityContext }) => 'databricks' -} -``` - -Either `string` or `function` could be passed. Providing a `Function` allows -to dynamically select a database type depending on the security context. -Usually used for [multitenancy][ref-multitenancy]. - -If not defined, Cube will lookup for environment variable -[`CUBEJS_DB_TYPE`](/reference/configuration/environment-variables#cubejs_db_type) to resolve the data source type. - [gh-jsonwebtoken-algs]: https://github.com/auth0/node-jsonwebtoken#algorithms-supported [link-express-cors-opts]: @@ -1534,7 +1504,6 @@ If not defined, Cube will lookup for environment variable [ref-sec-ctx]: /docs/data-modeling/access-control/context [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-modeling/cube#data_source [self-repofactory]: #repository_factory [ref-exec-environment-globals]: /docs/data-modeling/dynamic/schema-execution-environment#nodejs-globals-processenv-consolelog-and-others diff --git a/packages/cubejs-backend-native/python/cube/src/__init__.py b/packages/cubejs-backend-native/python/cube/src/__init__.py index 21dcdf7764826..c793af0869056 100644 --- a/packages/cubejs-backend-native/python/cube/src/__init__.py +++ b/packages/cubejs-backend-native/python/cube/src/__init__.py @@ -65,7 +65,6 @@ class Configuration: context_to_cube_store_router_id: Union[str, Callable[[RequestContext], str]] driver_factory: Callable[[RequestContext], Dict] external_driver_factory: Callable[[RequestContext], Dict] - db_type: Union[str, Callable[[RequestContext], str]] check_auth: Callable check_sql_auth: Callable can_switch_sql_user: Callable @@ -113,7 +112,6 @@ def __init__(self): self.context_to_cube_store_router_id = None self.driver_factory = None self.external_driver_factory = None - self.db_type = None self.check_auth = None self.check_sql_auth = None self.can_switch_sql_user = None diff --git a/packages/cubejs-backend-native/src/python/cube_config.rs b/packages/cubejs-backend-native/src/python/cube_config.rs index d5cc91ff9a086..aa9a5f38afe25 100644 --- a/packages/cubejs-backend-native/src/python/cube_config.rs +++ b/packages/cubejs-backend-native/src/python/cube_config.rs @@ -53,7 +53,6 @@ impl CubeConfigPy { "context_to_orchestrator_id", "context_to_cube_store_router_id", "context_to_groups", - "db_type", "driver_factory", "extend_context", "external_driver_factory", diff --git a/packages/cubejs-server-core/src/core/DevServer.ts b/packages/cubejs-server-core/src/core/DevServer.ts index 27c21df8b14d6..d1b47b9df0f09 100644 --- a/packages/cubejs-server-core/src/core/DevServer.ts +++ b/packages/cubejs-server-core/src/core/DevServer.ts @@ -119,7 +119,7 @@ export class DevServer { coreServerVersion: this.cubejsServer.coreServerVersion, dockerVersion: this.options.dockerVersion || null, projectFingerprint: this.cubejsServer.projectFingerprint, - dbType: options.dbType || null, + dbType: null, shouldStartConnectionWizardFlow: !this.options.isReadyForQueryProcessing(), livePreview: options.livePreview, isDocker: isDocker(), diff --git a/packages/cubejs-server-core/src/core/OptsHandler.ts b/packages/cubejs-server-core/src/core/OptsHandler.ts index 26260680a91a8..8021bb08bf7b7 100644 --- a/packages/cubejs-server-core/src/core/OptsHandler.ts +++ b/packages/cubejs-server-core/src/core/OptsHandler.ts @@ -48,16 +48,12 @@ export class OptsHandler { ) { this.assertOptions(createOptions); const options = cloneDeep(this.createOptions); - options.driverFactory = this.getDriverFactory(options); - options.dbType = this.getDbType(options); + const driverFactory = this.getDriverFactory(options); + options.driverFactory = driverFactory; + options.dbType = this.getDbType(driverFactory); this.initializedOptions = this.initializeCoreOptions(options); } - /** - * Decorated dbType flag. - */ - private decoratedType = false; - /** * Decorated driverFactory flag. */ @@ -84,35 +80,26 @@ export class OptsHandler { * Assert create options. */ private assertOptions(opts: CreateOptions) { + if ((opts as any).dbType) { + throw new Error( + 'CreateOptions.dbType was removed in v1.7.0. ' + + 'Use driverFactory instead (return a DriverConfig `{ type, ... }`), ' + + 'or set the CUBEJS_DB_TYPE environment variable. ' + + 'See https://github.com/cube-js/cube/blob/master/DEPRECATION.md#dbtype' + ); + } + optionsValidate(opts); if ( !this.isDevMode() && !process.env.CUBEJS_DB_TYPE && - !opts.dbType && !opts.driverFactory ) { throw new Error( - 'Either CUBEJS_DB_TYPE, CreateOptions.dbType or CreateOptions.driverFactory ' + - 'must be specified' + 'Either CUBEJS_DB_TYPE or CreateOptions.driverFactory must be specified' ); } - - // TODO (buntarb): this assertion should be restored after documentation - // will be added. - // - // if (opts.dbType) { - // this.core.logger( - // 'Cube.js `CreateOptions.dbType` Property Deprecation', - // { - // warning: ( - // // TODO (buntarb): add https://github.com/cube-js/cube.js/blob/master/DEPRECATION.md#dbType - // // link once it will be created. - // 'CreateOptions.dbType property is now deprecated, please migrate.' - // ), - // }, - // ); - // } } /** @@ -122,25 +109,6 @@ export class OptsHandler { val: DriverConfig | BaseDriver, ) { if (isDriver(val)) { - // TODO (buntarb): these assertions should be restored after dbType - // deprecation period will be passed. - // - // if (this.decoratedType) { - // throw new Error( - // 'CreateOptions.dbType is required if CreateOptions.driverFactory ' + - // 'returns driver instance' - // ); - // } - // this.core.logger( - // 'Cube.js CreateOptions.driverFactory Property Deprecation', - // { - // warning: ( - // // TODO (buntarb): add https://github.com/cube-js/cube.js/blob/master/DEPRECATION.md#driverFactory - // // link once it will be created. - // 'CreateOptions.driverFactory should return DriverConfig object instead of driver instance, please migrate.' - // ), - // }, - // ); if (!this.driverFactoryType) { this.driverFactoryType = 'BaseDriver'; } else if (this.driverFactoryType !== 'BaseDriver') { @@ -174,20 +142,6 @@ export class OptsHandler { } } - /** - * Assert value returned from the dbType function. - */ - private assertDbTypeResult(val: DatabaseType) { - if (typeof val !== 'string') { - throw new Error(`Unexpected CreateOptions.dbType result type: <${ - typeof val - }>${ - JSON.stringify(val, undefined, 2) - }`); - } - return val; - } - /** * Assert orchestration options. */ @@ -206,22 +160,20 @@ export class OptsHandler { /** * Default database factory function. - */ // eslint-disable-next-line @typescript-eslint/no-unused-vars + */ private defaultDriverFactory(ctx: DriverContext): DriverConfig { const type = getEnv('dbType', { dataSource: assertDataSource(ctx.dataSource), preAggregations: ctx.preAggregations, }); + return { type }; } - /** - * Async driver factory getter. - */ private getDriverFactory(opts: CreateOptions): DriverFactoryInternalFn { - const { dbType, driverFactory } = opts; - this.decoratedType = !dbType; + const { driverFactory } = opts; this.decoratedFactory = !driverFactory; + return async (ctx: DriverContext) => { if (!driverFactory) { if (!this.driverFactoryType) { @@ -232,6 +184,7 @@ export class OptsHandler { 'BaseDriver or DriverConfig.' ); } + // TODO (buntarb): wrapping this call with assertDriverFactoryResult // change assertions sequence and cause a fail of few tests. Review it. return this.defaultDriverFactory(ctx); @@ -243,36 +196,27 @@ export class OptsHandler { }; } - /** - * Async driver type getter. - */ private getDbType( - opts: CreateOptions & { - driverFactory: DriverFactoryInternalFn, - }, + driverFactory: DriverFactoryInternalFn, ): DbTypeInternalFn { - const { dbType, driverFactory } = opts; return async (ctx: DriverContext) => { - if (!dbType) { - let val: undefined | BaseDriver | DriverConfig; - let type: DatabaseType; - if (!this.driverFactoryType) { - val = await driverFactory(ctx); - } - if ( - this.driverFactoryType === 'BaseDriver' && - process.env.CUBEJS_DB_TYPE - ) { - type = process.env.CUBEJS_DB_TYPE; - } else if (this.driverFactoryType === 'DriverConfig') { - type = ((val || await driverFactory(ctx))).type; - } - return type; - } else if (typeof dbType === 'function') { - return this.assertDbTypeResult(await dbType(ctx)); - } else { - return dbType; + let val: undefined | BaseDriver | DriverConfig; + let type: DatabaseType; + + if (!this.driverFactoryType) { + val = await driverFactory(ctx); } + + if ( + this.driverFactoryType === 'BaseDriver' && + process.env.CUBEJS_DB_TYPE + ) { + type = process.env.CUBEJS_DB_TYPE; + } else if (this.driverFactoryType === 'DriverConfig') { + type = ((val || await driverFactory(ctx))).type; + } + + return type; }; } diff --git a/packages/cubejs-server-core/src/core/optionsValidate.ts b/packages/cubejs-server-core/src/core/optionsValidate.ts index e31f39550af45..0ba331d9f9476 100644 --- a/packages/cubejs-server-core/src/core/optionsValidate.ts +++ b/packages/cubejs-server-core/src/core/optionsValidate.ts @@ -58,7 +58,6 @@ const schemaOptions = Joi.object().keys({ processSubscriptionsInterval: Joi.number(), webSocketsBasePath: Joi.string(), // server-core CoreCreateOptions - dbType: dbTypes, externalDbType: dbTypes, schemaPath: Joi.string(), basePath: Joi.string(), diff --git a/packages/cubejs-server-core/src/core/types.ts b/packages/cubejs-server-core/src/core/types.ts index 51661178e2e0c..3d1cfee7d79ee 100644 --- a/packages/cubejs-server-core/src/core/types.ts +++ b/packages/cubejs-server-core/src/core/types.ts @@ -161,8 +161,6 @@ export type DriverConfig = { type: DatabaseType, } & DriverOptions; -export type DbTypeFn = (context: DriverContext) => - DatabaseType | Promise; export type DriverFactoryFn = (context: DriverContext) => Promise | BaseDriver | DriverConfig; @@ -189,7 +187,6 @@ export type BiToolSyncConfig = { }; export interface CreateOptions { - dbType?: DatabaseType | DbTypeFn; externalDbType?: DatabaseType | ExternalDbTypeFn; schemaPath?: string; basePath?: string; diff --git a/packages/cubejs-server-core/test/unit/OptsHandler.test.ts b/packages/cubejs-server-core/test/unit/OptsHandler.test.ts index 3362cd0e78a0b..db97854bbe5a5 100644 --- a/packages/cubejs-server-core/test/unit/OptsHandler.test.ts +++ b/packages/cubejs-server-core/test/unit/OptsHandler.test.ts @@ -1,9 +1,8 @@ -/* globals jest, describe, beforeEach, test, expect */ +/* globals jest, describe, test, expect */ import { BaseDriver as OriginalBaseDriver } from '@cubejs-backend/query-orchestrator'; import type { DatabaseType, - DbTypeFn, DbTypeInternalFn, ExternalDbTypeFn, DriverFactoryFn, @@ -43,12 +42,10 @@ class CubejsServerCoreExposed extends CubejsServerCore { } } -let message: string; - const conf = { apiSecret: 'testApiSecretToSuppressWarning', - logger: (msg: string) => { - message = msg; + logger: (_msg: string) => { + // noop }, externalDbType: 'postgres', externalDriverFactory: async () => ({ @@ -58,24 +55,13 @@ const conf = { }; describe('OptsHandler class', () => { - beforeEach(() => { - message = ''; + test('must throw if CreateOptions.dbType is specified', () => { + expect(() => new CubejsServerCoreExposed({ + ...conf, + dbType: (() => 'postgres'), + })).toThrow('CreateOptions.dbType was removed in v1.7.0'); }); - test.skip( - 'deprecation warning must be printed if dbType was specified -- ' + - 'need to be restored after documentation will be added', - async () => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const core = new CubejsServerCoreExposed({ - ...conf, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - dbType: ((context: DriverContext) => 'postgres'), - }); - expect(message).toEqual('Cube.js `CreateOptions.dbType` Property Deprecation'); - } - ); - test('must handle vanilla CreateOptions', async () => { process.env.CUBEJS_DB_TYPE = 'postgres'; @@ -83,7 +69,6 @@ describe('OptsHandler class', () => { { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: undefined, }); @@ -129,7 +114,6 @@ describe('OptsHandler class', () => { { const core = new CubejsServerCoreExposed({ ...conf, - dbType: 'postgres', driverFactory: ({ dataSource }) => createMockDriver(dataSource), }); @@ -151,7 +135,6 @@ describe('OptsHandler class', () => { { const core = new CubejsServerCoreExposed({ ...conf, - dbType: () => 'postgres', driverFactory: ({ dataSource }) => createMockDriver(dataSource), }); @@ -173,7 +156,6 @@ describe('OptsHandler class', () => { { const core = new CubejsServerCoreExposed({ ...conf, - dbType: () => 'postgres', driverFactory: async ({ dataSource }) => createMockDriver(dataSource), }); @@ -200,7 +182,6 @@ describe('OptsHandler class', () => { // Case 1 core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE, }), @@ -220,7 +201,6 @@ describe('OptsHandler class', () => { // Case 2 core = new CubejsServerCoreExposed({ ...conf, - dbType: 'postgres', driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE, }), @@ -240,7 +220,6 @@ describe('OptsHandler class', () => { // Case 3 core = new CubejsServerCoreExposed({ ...conf, - dbType: 'postgres', driverFactory: async () => ({ type: process.env.CUBEJS_DB_TYPE, }), @@ -260,7 +239,6 @@ describe('OptsHandler class', () => { // Case 4 core = new CubejsServerCoreExposed({ ...conf, - dbType: (async () => 'postgres'), driverFactory: async () => ({ type: process.env.CUBEJS_DB_TYPE, }), @@ -287,7 +265,6 @@ describe('OptsHandler class', () => { await expect(async () => { core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: (() => true) as unknown as DriverFactoryFn, }); await core.options.driverFactory({ dataSource: 'default' }); @@ -300,7 +277,6 @@ describe('OptsHandler class', () => { await expect(async () => { core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: 1 as unknown as DriverFactoryFn, }); await core.options.driverFactory({ dataSource: 'default' }); @@ -308,49 +284,7 @@ describe('OptsHandler class', () => { 'Invalid cube-server-core options: "driverFactory" must be of type function' ); - // Case 3 -- need to be restored after assertion will be restored. - // - // await expect(async () => { - // const core = new CubejsServerCoreExposed({ - // ...conf, - // dbType: undefined, - // driverFactory: () => CubejsServerCore.createDriver('postgres'), - // }); - // await core.options.driverFactory({ dataSource: 'default' }); - // }).rejects.toThrow( - // 'CreateOptions.dbType is required if CreateOptions.driverFactory ' + - // 'returns driver instance' - // ); - - // Case 4 - await expect(async () => { - core = new CubejsServerCoreExposed({ - ...conf, - dbType: (() => true) as unknown as DbTypeFn, - driverFactory: async () => ({ - type: process.env.CUBEJS_DB_TYPE, - }), - }); - await core.options.dbType({ dataSource: 'default' }); - }).rejects.toThrow( - 'Unexpected CreateOptions.dbType result type: true' - ); - - // Case 5 - await expect(async () => { - core = new CubejsServerCoreExposed({ - ...conf, - dbType: true as unknown as DbTypeFn, - driverFactory: async () => ({ - type: process.env.CUBEJS_DB_TYPE, - }), - }); - await core.options.dbType({ dataSource: 'default' }); - }).rejects.toThrow( - 'Invalid cube-server-core options: "dbType" does not match any of the allowed types' - ); - - // Case 6 + // Case 3 expect(() => { process.env.CUBEJS_DB_TYPE = undefined; process.env.NODE_ENV = 'production'; @@ -358,14 +292,13 @@ describe('OptsHandler class', () => { core = new CubejsServerCoreExposed({ ...conf, apiSecret: undefined, - dbType: undefined, driverFactory: undefined, }); }).toThrow( 'apiSecret is required option(s)' ); - // Case 7 + // Case 4 expect(() => { delete process.env.CUBEJS_DB_TYPE; process.env.NODE_ENV = 'production'; @@ -373,12 +306,10 @@ describe('OptsHandler class', () => { core = new CubejsServerCoreExposed({ ...conf, apiSecret: 'apiSecret', - dbType: undefined, driverFactory: undefined, }); }).toThrow( - 'Either CUBEJS_DB_TYPE, CreateOptions.dbType or ' + - 'CreateOptions.driverFactory must be specified' + 'Either CUBEJS_DB_TYPE or CreateOptions.driverFactory must be specified' ); delete process.env.NODE_ENV; @@ -387,7 +318,6 @@ describe('OptsHandler class', () => { test('must configure/reconfigure contextToDbType', async () => { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: undefined, }); @@ -424,7 +354,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, apiSecret: '44b87d4309471e5d9d18738450db0e49', - dbType: () => 'postgres', driverFactory: async () => (new CustomDriver()) as unknown as OriginalBaseDriver, orchestratorOptions: {}, }); @@ -494,7 +423,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, apiSecret: '44b87d4309471e5d9d18738450db0e49', - dbType: () => 'postgres', contextToOrchestratorId: ({ securityContext }) => ( `ID_${securityContext.tenantId}` ), @@ -541,7 +469,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: {}, }); @@ -571,7 +498,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: {}, }); @@ -601,7 +527,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: () => ({}), }); @@ -631,7 +556,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: () => ({}), }); @@ -661,7 +585,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: () => ({}), }); @@ -694,7 +617,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: () => ({}), }); @@ -729,7 +651,6 @@ describe('OptsHandler class', () => { const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: () => ({}), }); @@ -762,7 +683,6 @@ describe('OptsHandler class', () => { const concurrency = 15; const core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: () => ({ queryCacheOptions: { @@ -809,7 +729,6 @@ describe('OptsHandler class', () => { // Case 1 core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: () => ({ queryCacheOptions: { @@ -834,7 +753,6 @@ describe('OptsHandler class', () => { // Case 2 core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE, testConnectionTimeout, @@ -861,7 +779,6 @@ describe('OptsHandler class', () => { // Case 3 core = new CubejsServerCoreExposed({ ...conf, - dbType: undefined, driverFactory: () => ({ type: process.env.CUBEJS_DB_TYPE }), orchestratorOptions: () => ({ queryCacheOptions: { diff --git a/packages/cubejs-server-core/test/unit/index.test.ts b/packages/cubejs-server-core/test/unit/index.test.ts index f769f0c5843ce..4bdc5d8be3460 100644 --- a/packages/cubejs-server-core/test/unit/index.test.ts +++ b/packages/cubejs-server-core/test/unit/index.test.ts @@ -101,29 +101,18 @@ describe('index.test', () => { process.env.CUBEJS_API_SECRET = 'api-secret'; }); - test('Should create instance of CubejsServerCore, dbType as string', () => { - expect(new CubejsServerCore({ - dbType: 'mysql' - })).toBeInstanceOf(CubejsServerCore); + test('Should throw error, dbType has been removed (string)', () => { + expect(() => new CubejsServerCore({ dbType: 'mysql' })) + .toThrowError(/CreateOptions.dbType was removed in v1\.7\.0/); }); - test('Should create instance of CubejsServerCore, dbType as func', () => { - const options = { dbType: () => 'postgres' }; - - expect(new CubejsServerCore(options)) - .toBeInstanceOf(CubejsServerCore); - }); - - test('Should throw error, unknown dbType', () => { - const options = { dbType: 'unknown-db' }; - - expect(() => new CubejsServerCore(options)) - .toThrowError(/"dbType" must be one of/); + test('Should throw error, dbType has been removed (func)', () => { + expect(() => new CubejsServerCore({ dbType: () => 'postgres' })) + .toThrowError(/CreateOptions.dbType was removed in v1\.7\.0/); }); test('Should throw error, invalid options', () => { const options = { - dbType: 'mysql', externalDbType: 'mysql', schemaPath: '/test/path/test/', basePath: '/basePath', @@ -137,7 +126,10 @@ describe('index.test', () => { }); test('Should create instance of CubejsServerCore, orchestratorOptions as func', () => { - const options = { dbType: 'mysql', orchestratorOptions: () => {} }; + const options = { + driverFactory: () => ({ type: 'mysql' }), + orchestratorOptions: () => {} + }; expect(new CubejsServerCore(options)) .toBeInstanceOf(CubejsServerCore); @@ -158,23 +150,8 @@ describe('index.test', () => { return createOrchestratorApiSpy.mock.calls[0]; }; - test('dbType should return string, failure', async () => { - const options: CreateOptions = { dbType: () => null }; - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const [driverFactory, orchestratorOptions] = await getCreateOrchestratorOptionsFromServer(options); - - try { - await driverFactory('mongo'); - - throw new Error('driverFactory will call dbType and dbType must throw an exception'); - } catch (e: any) { - expect(e.message).toEqual('Unexpected CreateOptions.dbType result type: null'); - } - }); - test('driverFactory should return driver, failure', async () => { - const options: CreateOptions = { dbType: () => 'mongo', driverFactory: () => null, }; + const options: CreateOptions = { driverFactory: () => null, }; const [driverFactory, _orchestratorOptions] = await getCreateOrchestratorOptionsFromServer(options); @@ -188,7 +165,7 @@ describe('index.test', () => { }); test('externalDriverFactory should return driver, failure', async () => { - const options: CreateOptions = { dbType: () => 'mongo', externalDriverFactory: () => null, }; + const options: CreateOptions = { externalDriverFactory: () => null, }; const [_driverFactory, orchestratorOptions] = await getCreateOrchestratorOptionsFromServer(options); @@ -213,7 +190,6 @@ describe('index.test', () => { }; const options = { - dbType: 'mysql', externalDbType: 'cubestore', schemaPath: '/test/path/test/', basePath: '/basePath', @@ -222,11 +198,7 @@ describe('index.test', () => { devServer: false, apiSecret: 'randomstring', logger: () => {}, - driverFactory: () => { - setLogger: () => {}, - testConnection: async () => {}, - release: () => {} - }, + driverFactory: () => ({ type: 'mysql' }), dialectFactory: () => {}, externalDriverFactory: () => { setLogger: () => {}, @@ -548,21 +520,6 @@ describe('index.test', () => { ]); }); - // TODO (buntarb): This test doesn't have any sense anymore, because dbType - // property is deprecated and doesn't required in any mode. Need to be removed - test.skip('Should throw error, options are required (dev mode)', () => { - delete process.env.CUBEJS_API_SECRET; - process.env.CUBEJS_DEV_MODE = 'true'; - - expect(() => { - jest.spyOn(CubejsServerCoreOpen.prototype, 'isReadyForQueryProcessing').mockImplementation(() => true); - // eslint-disable-next-line - new CubejsServerCoreOpen({}); - jest.restoreAllMocks(); - }) - .toThrowError(/dbType is required/); - }); - test('Pass all required (dev mode) without apiSecret (should be autogenerated)', () => { delete process.env.CUBEJS_API_SECRET; @@ -582,7 +539,7 @@ describe('index.test', () => { new CubejsServerCoreOpen({}); jest.restoreAllMocks(); }) - .toThrowError('Either CUBEJS_DB_TYPE, CreateOptions.dbType or CreateOptions.driverFactory must be specified'); + .toThrowError('Either CUBEJS_DB_TYPE or CreateOptions.driverFactory must be specified'); }); test('Should throw error, options are required (production mode with jwkUrl)', () => { @@ -594,7 +551,7 @@ describe('index.test', () => { new CubejsServerCoreOpen({ jwt: { jwkUrl: 'https://test.com/j.json' } }); jest.restoreAllMocks(); }) - .toThrowError('Either CUBEJS_DB_TYPE, CreateOptions.dbType or CreateOptions.driverFactory must be specified'); + .toThrowError('Either CUBEJS_DB_TYPE or CreateOptions.driverFactory must be specified'); }); test('Pass all required props (production mode with JWK URL)', () => { @@ -623,7 +580,7 @@ describe('index.test', () => { } const cubejsServerCore = new CubejsServerCoreOpen({ - dbType: 'mysql', + driverFactory: () => ({ type: 'mysql' }), apiSecret: 'secret', scheduledRefreshTimer: input }); @@ -652,7 +609,7 @@ describe('index.test', () => { process.env.CUBEJS_REFRESH_WORKER = 'false'; const cubejsServerCore = new CubejsServerCoreOpen({ - dbType: 'mysql', + driverFactory: () => ({ type: 'mysql' }), apiSecret: 'secret', }); expect(cubejsServerCore).toBeInstanceOf(CubejsServerCore); @@ -698,7 +655,7 @@ describe('index.test', () => { process.env.CUBEJS_ROLLUP_ONLY = rollupOnlyMode.toString(); const cubejsServerCore = new CubejsServerCoreOpen({ - dbType: 'mysql', + driverFactory: () => ({ type: 'mysql' }), apiSecret: 'secret', ...options, }); @@ -817,7 +774,7 @@ describe('index.test', () => { ); const cubejsServerCore = new CubejsServerCoreOpen({ - dbType: 'mysql', + driverFactory: () => ({ type: 'mysql' }), apiSecret: 'secret', // 250ms scheduledRefreshTimer: 1, @@ -917,7 +874,7 @@ describe('index.test', () => { let counter = 0; const cubejsServerCore = new CubejsServerCoreOpen({ - dbType: 'mysql', + driverFactory: () => ({ type: 'mysql' }), apiSecret: 'secret', // 250ms scheduledRefreshTimer: 1, diff --git a/packages/cubejs-testing-drivers/src/helpers/getCore.ts b/packages/cubejs-testing-drivers/src/helpers/getCore.ts index 0cd2e53da0c7f..9d257d25408e9 100644 --- a/packages/cubejs-testing-drivers/src/helpers/getCore.ts +++ b/packages/cubejs-testing-drivers/src/helpers/getCore.ts @@ -11,6 +11,9 @@ export function getCore( storage: BaseDriver, ): CubejsServerCoreExposed { const _path = path.resolve(process.cwd(), './.temp/model/ecommerce.yaml'); + // CreateOptions.dbType has been removed; the driver type for a driverFactory + // returning a BaseDriver instance is resolved from CUBEJS_DB_TYPE. + process.env.CUBEJS_DB_TYPE = sourceType; return new CubejsServerCore({ apiSecret: 'mysupersecret', // devServer: true, @@ -18,7 +21,6 @@ export function getCore( logger: (msg: string, params: Record) => { // process.stdout.write(`${msg}\n${JSON.stringify(params, undefined, 2)}\n`); }, - dbType: sourceType, driverFactory: async () => source, externalDbType: storageType, externalDriverFactory: async () => storage, diff --git a/packages/cubejs-testing/birdbox-fixtures/lambda/cube.js b/packages/cubejs-testing/birdbox-fixtures/lambda/cube.js index 813926a2d547c..21abbc8756f49 100644 --- a/packages/cubejs-testing/birdbox-fixtures/lambda/cube.js +++ b/packages/cubejs-testing/birdbox-fixtures/lambda/cube.js @@ -1,6 +1,3 @@ -const PostgresDriver = require("@cubejs-backend/postgres-driver"); -const KsqlDriver = require("@cubejs-backend/ksql-driver"); - module.exports = { orchestratorOptions: { preAggregationsOptions: { @@ -10,22 +7,16 @@ module.exports = { contextToApiScopes: async () => new Promise((resolve) => { resolve(['graphql', 'meta', 'data', 'jobs']); }), - dbType: ({ dataSource }) => { - if (dataSource === 'default') { - return 'postgres'; - } - - return dataSource || 'postgres'; - }, - driverFactory: async ({ dataSource }) => { - if (dataSource === "ksql") { - return new KsqlDriver({ + driverFactory: ({ dataSource }) => { + if (dataSource === 'ksql') { + return { + type: 'ksql', url: process.env.KSQL_URL, kafkaHost: process.env.KSQL_KAFKA_HOST, kafkaUseSsl: false, - }); + }; } - return new PostgresDriver(); + return { type: 'postgres' }; } }; diff --git a/packages/cubejs-testing/birdbox-fixtures/multidb/cube.js b/packages/cubejs-testing/birdbox-fixtures/multidb/cube.js index aaca1137f6ead..9f141b0947062 100644 --- a/packages/cubejs-testing/birdbox-fixtures/multidb/cube.js +++ b/packages/cubejs-testing/birdbox-fixtures/multidb/cube.js @@ -1,26 +1,21 @@ -const PostgresDriver = require('@cubejs-backend/postgres-driver'); -const MySqlDriver = require("@cubejs-backend/mysql-driver"); - module.exports = { - dbType: ({ dataSource }) => { - switch (dataSource) { - case 'suppliers': return 'postgres'; - case 'products': return 'mysql'; - default: return 'postgres'; - } - }, - driverFactory: ({ dataSource }) => { switch (dataSource) { - case 'suppliers': return new PostgresDriver({}); - case 'products': return new MySqlDriver({ - host: process.env.CUBEJS_DB_HOST2, - port: process.env.CUBEJS_DB_PORT2, - database: process.env.CUBEJS_DB_NAME2, - user: process.env.CUBEJS_DB_USER2, - password: process.env.CUBEJS_DB_PASS2, - }); - default: throw new Error(`driverFactory: Invalid dataSource '${dataSource}'`); + case 'suppliers': + return { type: 'postgres' }; + case 'products': + return { + type: 'mysql', + host: process.env.CUBEJS_DB_HOST2, + port: process.env.CUBEJS_DB_PORT2, + database: process.env.CUBEJS_DB_NAME2, + user: process.env.CUBEJS_DB_USER2, + password: process.env.CUBEJS_DB_PASS2, + }; + case 'default': + return { type: 'postgres' }; + default: + throw new Error(`driverFactory: Invalid dataSource '${dataSource}'`); } }, }; From e47b35a679fb2016a202f835e0e672ea051cdb15 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 11 Jun 2026 21:19:36 +0200 Subject: [PATCH 08/24] chore!: Drop support for node.js v20, deprecate v22 Node.js 20 reached EOL on April 30, 2026; Node.js 22 is in maintenance mode since October 21, 2025. The minimal supported version is now 22. --- DEPRECATION.md | 15 +++++++++++---- package.json | 2 +- packages/cubejs-api-gateway/package.json | 2 +- packages/cubejs-athena-driver/package.json | 2 +- packages/cubejs-backend-cloud/package.json | 2 +- packages/cubejs-backend-maven/package.json | 4 ++-- packages/cubejs-backend-native/package.json | 4 ++-- packages/cubejs-backend-shared/package.json | 4 ++-- .../cubejs-backend-shared/src/node-check.ts | 2 +- packages/cubejs-base-driver/package.json | 4 ++-- packages/cubejs-bigquery-driver/package.json | 2 +- packages/cubejs-cli/package.json | 4 ++-- packages/cubejs-clickhouse-driver/package.json | 2 +- packages/cubejs-crate-driver/package.json | 2 +- packages/cubejs-cubestore-driver/package.json | 4 ++-- .../cubejs-databricks-jdbc-driver/package.json | 4 ++-- .../cubejs-dbt-schema-extension/package.json | 2 +- packages/cubejs-docker/package.json | 2 +- packages/cubejs-dremio-driver/package.json | 2 +- packages/cubejs-druid-driver/package.json | 4 ++-- packages/cubejs-duckdb-driver/package.json | 4 ++-- packages/cubejs-firebolt-driver/package.json | 2 +- packages/cubejs-hive-driver/package.json | 2 +- packages/cubejs-jdbc-driver/package.json | 4 ++-- packages/cubejs-ksql-driver/package.json | 2 +- packages/cubejs-linter/package.json | 2 +- .../cubejs-materialize-driver/package.json | 2 +- packages/cubejs-mongobi-driver/package.json | 4 ++-- packages/cubejs-mssql-driver/package.json | 4 ++-- .../package.json | 2 +- packages/cubejs-mysql-driver/package.json | 2 +- packages/cubejs-oracle-driver/package.json | 2 +- packages/cubejs-pinot-driver/package.json | 2 +- packages/cubejs-playground/package.json | 2 +- packages/cubejs-postgres-driver/package.json | 2 +- packages/cubejs-prestodb-driver/package.json | 2 +- .../cubejs-query-orchestrator/package.json | 4 ++-- packages/cubejs-questdb-driver/package.json | 2 +- packages/cubejs-redshift-driver/package.json | 2 +- packages/cubejs-schema-compiler/package.json | 4 ++-- packages/cubejs-server-core/package.json | 4 ++-- packages/cubejs-server/package.json | 4 ++-- packages/cubejs-sqlite-driver/package.json | 2 +- packages/cubejs-templates/package.json | 2 +- packages/cubejs-testing-drivers/package.json | 4 ++-- packages/cubejs-testing-shared/package.json | 4 ++-- packages/cubejs-testing/package.json | 4 ++-- packages/cubejs-trino-driver/package.json | 2 +- packages/cubejs-vertica-driver/package.json | 2 +- yarn.lock | 18 +++++++++--------- 50 files changed, 87 insertions(+), 80 deletions(-) diff --git a/DEPRECATION.md b/DEPRECATION.md index 6e26d8f15f812..144218e4f3e9a 100644 --- a/DEPRECATION.md +++ b/DEPRECATION.md @@ -65,10 +65,11 @@ features: | Removed | [`/v1/run-scheduled-refresh` REST API endpoint](#v1run-scheduled-refresh-rest-api-endpoint) | v0.35.0 | v0.36.0 | | Removed | [Node.js 18](#nodejs-18) | v0.36.0 | v1.3.0 | | Removed | [`CUBEJS_SCHEDULED_REFRESH_CONCURRENCY`](#cubejs_scheduled_refresh_concurrency) | v1.2.7 | v1.7.0 | -| Deprecated | [Node.js 20](#nodejs-20) | v1.3.0 | | +| Removed | [Node.js 20](#nodejs-20) | v1.3.0 | v1.7.0 | | Removed | [`renewQuery` parameter of the `/v1/load` endpoint](#renewquery-parameter-of-the-v1load-endpoint) | v1.3.73 | v1.7.0 | | Removed | [Elasticsearch driver](#elasticsearch-driver) | v1.6.0 | v1.7.0 | | Removed | [`context_to_roles`](#context-to-roles) | v1.6.4 | v1.7.0 | +| Deprecated | [Node.js 22](#nodejs-22) | v1.7.0 | | ### Node.js 8 @@ -417,10 +418,10 @@ This environment variable was renamed to [`CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_ ### Node.js 20 -**Deprecated in Release: v1.3.0** +**Removed in Release: v1.7.0** -Node.js 20 is in maintenance mode from [November 22, 2024][link-nodejs-eol]. This means -no more new features, only security updates. Please upgrade to Node.js 22 or higher. +Node.js 20 reached [End of Life on April 30, 2026][link-nodejs-eol]. This means +no more updates. Please upgrade to Node.js 22 or higher. ### `renewQuery` parameter of the `/v1/load` endpoint @@ -447,3 +448,9 @@ The Elasticsearch driver has been removed. The `context_to_roles` configuration option has been removed. Please use `context_to_groups` instead. +### Node.js 22 + +**Deprecated in Release: v1.7.0** + +Node.js 22 is in maintenance mode from [October 21, 2025][link-nodejs-eol]. This means +no more new features, only security updates. Please upgrade to Node.js 24 or higher. diff --git a/package.json b/package.json index b2fa0414be60d..a7c17a9587f89 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "resolutions": { "es5-ext": "0.10.53", "lodash": "^4.17.0", - "@types/node": "^20", + "@types/node": "^22", "@types/ramda": "0.27.40", "thrift": "0.20.0" }, diff --git a/packages/cubejs-api-gateway/package.json b/packages/cubejs-api-gateway/package.json index 65f2d2619125b..d6da87ac62d76 100644 --- a/packages/cubejs-api-gateway/package.json +++ b/packages/cubejs-api-gateway/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-api-gateway" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", diff --git a/packages/cubejs-athena-driver/package.json b/packages/cubejs-athena-driver/package.json index abaa4be8541f9..1ae872525770c 100644 --- a/packages/cubejs-athena-driver/package.json +++ b/packages/cubejs-athena-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-athena-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "scripts": { "build": "rm -rf dist && npm run tsc", diff --git a/packages/cubejs-backend-cloud/package.json b/packages/cubejs-backend-cloud/package.json index ec12ebf5472a8..1718cfd4cde12 100644 --- a/packages/cubejs-backend-cloud/package.json +++ b/packages/cubejs-backend-cloud/package.json @@ -18,7 +18,7 @@ "dist/src/*" ], "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "author": "Cube Dev, Inc.", "repository": { diff --git a/packages/cubejs-backend-maven/package.json b/packages/cubejs-backend-maven/package.json index 1e9f16e603ace..3bfbbab7f42d7 100644 --- a/packages/cubejs-backend-maven/package.json +++ b/packages/cubejs-backend-maven/package.json @@ -10,7 +10,7 @@ "directory": "packages/cubejs-druid-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "bin": { "maven-resolve": "bin/maven-resolve" @@ -38,7 +38,7 @@ "devDependencies": { "@cubejs-backend/linter": "1.6.67", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "jest": "^29", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json index e7a1916d240e8..0164f994059ba 100644 --- a/packages/cubejs-backend-native/package.json +++ b/packages/cubejs-backend-native/package.json @@ -33,7 +33,7 @@ "lint:fix": "eslint --fix test/ js/ --ext .ts" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/js" @@ -41,7 +41,7 @@ "devDependencies": { "@cubejs-backend/linter": "1.6.67", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "cargo-cp-artifact": "^0.1.9", "jest": "^29", "jest-bench": "^29", diff --git a/packages/cubejs-backend-shared/package.json b/packages/cubejs-backend-shared/package.json index 5c0eecc43c222..7da083b96382e 100644 --- a/packages/cubejs-backend-shared/package.json +++ b/packages/cubejs-backend-shared/package.json @@ -17,7 +17,7 @@ "dist/src/*" ], "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "author": "Cube Dev, Inc.", "repository": { @@ -32,7 +32,7 @@ "@types/cli-progress": "^3.9.1", "@types/decompress": "^4.2.7", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "@types/node-fetch": "^2.5.8", "@types/shelljs": "^0.8.5", "@types/throttle-debounce": "^2.1.0", diff --git a/packages/cubejs-backend-shared/src/node-check.ts b/packages/cubejs-backend-shared/src/node-check.ts index 8088012d45058..a80b972a7f8da 100644 --- a/packages/cubejs-backend-shared/src/node-check.ts +++ b/packages/cubejs-backend-shared/src/node-check.ts @@ -1,7 +1,7 @@ import process from 'process'; import color from '@oclif/color'; -const leastSupportedVersion = 20; +const leastSupportedVersion = 22; const currentNodeVersion = process.versions.node; const semver = currentNodeVersion.split('.'); const major = parseInt( semver[0], 10); diff --git a/packages/cubejs-base-driver/package.json b/packages/cubejs-base-driver/package.json index 7ffc4dc9b31a7..77cfaaf07f0cf 100644 --- a/packages/cubejs-base-driver/package.json +++ b/packages/cubejs-base-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-base-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -39,7 +39,7 @@ "devDependencies": { "@cubejs-backend/linter": "1.6.67", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "jest": "^29", "ts-jest": "^29", "typescript": "~5.2.2" diff --git a/packages/cubejs-bigquery-driver/package.json b/packages/cubejs-bigquery-driver/package.json index c98bf76f0fd2f..474416fce2704 100644 --- a/packages/cubejs-bigquery-driver/package.json +++ b/packages/cubejs-bigquery-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-bigquery-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "scripts": { "build": "rm -rf dist && npm run tsc", diff --git a/packages/cubejs-cli/package.json b/packages/cubejs-cli/package.json index 2e25c36a1a85f..6a8689730ea25 100644 --- a/packages/cubejs-cli/package.json +++ b/packages/cubejs-cli/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-cli" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "bin": { "cubejs": "dist/src/index.js" @@ -59,7 +59,7 @@ "@types/inquirer": "^7.3.1", "@types/jest": "^29", "@types/jsonwebtoken": "^9.0.2", - "@types/node": "^20", + "@types/node": "^22", "@types/semver": "^7.5.8", "husky": "^4.2.3", "jest": "^29", diff --git a/packages/cubejs-clickhouse-driver/package.json b/packages/cubejs-clickhouse-driver/package.json index 65489e5a02261..a3a398c0155dc 100644 --- a/packages/cubejs-clickhouse-driver/package.json +++ b/packages/cubejs-clickhouse-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-clickhouse-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-crate-driver/package.json b/packages/cubejs-crate-driver/package.json index 6139082ebc725..f8de956931abf 100644 --- a/packages/cubejs-crate-driver/package.json +++ b/packages/cubejs-crate-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-crate-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-cubestore-driver/package.json b/packages/cubejs-cubestore-driver/package.json index d893454c503bf..e6df043947703 100644 --- a/packages/cubejs-cubestore-driver/package.json +++ b/packages/cubejs-cubestore-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-cubestore-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "README.md", @@ -43,7 +43,7 @@ "@cubejs-backend/linter": "1.6.67", "@types/csv-write-stream": "^2.0.0", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "@types/ws": "^7.4.0", "jest": "^29", "typescript": "~5.2.2" diff --git a/packages/cubejs-databricks-jdbc-driver/package.json b/packages/cubejs-databricks-jdbc-driver/package.json index 3d45e0a4b5dba..2d05b82282698 100644 --- a/packages/cubejs-databricks-jdbc-driver/package.json +++ b/packages/cubejs-databricks-jdbc-driver/package.json @@ -10,7 +10,7 @@ "directory": "packages/cubejs-databricks-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -42,7 +42,7 @@ "devDependencies": { "@cubejs-backend/linter": "1.6.67", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "@types/ramda": "^0.27.34", "@types/uuid": "^8.3.4", "jest": "^29", diff --git a/packages/cubejs-dbt-schema-extension/package.json b/packages/cubejs-dbt-schema-extension/package.json index f1f7db7bd2268..6b77eddce31f2 100644 --- a/packages/cubejs-dbt-schema-extension/package.json +++ b/packages/cubejs-dbt-schema-extension/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-dbt-schema-extension" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-docker/package.json b/packages/cubejs-docker/package.json index 8d1c2b5c5efb2..cc2652db468df 100644 --- a/packages/cubejs-docker/package.json +++ b/packages/cubejs-docker/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "private": true, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "dependencies": { "@cubejs-backend/athena-driver": "1.6.67", diff --git a/packages/cubejs-dremio-driver/package.json b/packages/cubejs-dremio-driver/package.json index 8fe270b0d2d1c..a7454df2a942b 100644 --- a/packages/cubejs-dremio-driver/package.json +++ b/packages/cubejs-dremio-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-dremio-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "driver/DremioDriver.js", "scripts": { diff --git a/packages/cubejs-druid-driver/package.json b/packages/cubejs-druid-driver/package.json index ec951de27bf09..413c1bda9e0a8 100644 --- a/packages/cubejs-druid-driver/package.json +++ b/packages/cubejs-druid-driver/package.json @@ -10,7 +10,7 @@ "directory": "packages/cubejs-druid-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -36,7 +36,7 @@ "devDependencies": { "@cubejs-backend/linter": "1.6.67", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "jest": "^29", "testcontainers": "^10.28.0", "typescript": "~5.2.2" diff --git a/packages/cubejs-duckdb-driver/package.json b/packages/cubejs-duckdb-driver/package.json index 618434d756122..6699865da2649 100644 --- a/packages/cubejs-duckdb-driver/package.json +++ b/packages/cubejs-duckdb-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-duckdb-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", @@ -37,7 +37,7 @@ "@cubejs-backend/linter": "1.6.67", "@cubejs-backend/testing-shared": "1.6.67", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "jest": "^29", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-firebolt-driver/package.json b/packages/cubejs-firebolt-driver/package.json index 36bd51daf4d0c..561f7144e5fa4 100644 --- a/packages/cubejs-firebolt-driver/package.json +++ b/packages/cubejs-firebolt-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-firebolt-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-hive-driver/package.json b/packages/cubejs-hive-driver/package.json index debd9e8ba9640..82419c8af6002 100644 --- a/packages/cubejs-hive-driver/package.json +++ b/packages/cubejs-hive-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-hive-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "src/HiveDriver.js", "scripts": { diff --git a/packages/cubejs-jdbc-driver/package.json b/packages/cubejs-jdbc-driver/package.json index a7f63af1b0c1d..7f24cc831ad1d 100644 --- a/packages/cubejs-jdbc-driver/package.json +++ b/packages/cubejs-jdbc-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-jdbc-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "index.js", "typings": "dist/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@cubejs-backend/linter": "1.6.67", - "@types/node": "^20", + "@types/node": "^22", "@types/sqlstring": "^2.3.0", "typescript": "~5.2.2" } diff --git a/packages/cubejs-ksql-driver/package.json b/packages/cubejs-ksql-driver/package.json index c8254e3e50594..d9b6bd0f7e714 100644 --- a/packages/cubejs-ksql-driver/package.json +++ b/packages/cubejs-ksql-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-ksql-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-linter/package.json b/packages/cubejs-linter/package.json index 150267a58314d..47c5c58b4b220 100644 --- a/packages/cubejs-linter/package.json +++ b/packages/cubejs-linter/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-mssql-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "index.js", "peerDependencies": { diff --git a/packages/cubejs-materialize-driver/package.json b/packages/cubejs-materialize-driver/package.json index b14f552dbb273..b2cb98cabb7a1 100644 --- a/packages/cubejs-materialize-driver/package.json +++ b/packages/cubejs-materialize-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-materialize-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-mongobi-driver/package.json b/packages/cubejs-mongobi-driver/package.json index b1773c4031fb6..41eaac04cd64f 100644 --- a/packages/cubejs-mongobi-driver/package.json +++ b/packages/cubejs-mongobi-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-mongobi-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", @@ -29,7 +29,7 @@ "dependencies": { "@cubejs-backend/base-driver": "1.6.67", "@cubejs-backend/shared": "1.6.67", - "@types/node": "^20", + "@types/node": "^22", "moment": "^2.29.1", "mysql2": "^3.11.5" }, diff --git a/packages/cubejs-mssql-driver/package.json b/packages/cubejs-mssql-driver/package.json index 013415f70f2ca..27c9715d769b9 100644 --- a/packages/cubejs-mssql-driver/package.json +++ b/packages/cubejs-mssql-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-mssql-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", @@ -31,7 +31,7 @@ }, "devDependencies": { "@types/mssql": "^9.1.7", - "@types/node": "^20" + "@types/node": "^22" }, "jest": { "testEnvironment": "node" diff --git a/packages/cubejs-mysql-aurora-serverless-driver/package.json b/packages/cubejs-mysql-aurora-serverless-driver/package.json index 02728e77c3892..7bbf7daa02715 100644 --- a/packages/cubejs-mysql-aurora-serverless-driver/package.json +++ b/packages/cubejs-mysql-aurora-serverless-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-mysql-aurora-serverless-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "driver/AuroraServerlessMySqlDriver.js", "typings": "driver/index.d.ts", diff --git a/packages/cubejs-mysql-driver/package.json b/packages/cubejs-mysql-driver/package.json index f76c0d20884c1..15a1d07e61c10 100644 --- a/packages/cubejs-mysql-driver/package.json +++ b/packages/cubejs-mysql-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-mysql-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-oracle-driver/package.json b/packages/cubejs-oracle-driver/package.json index 2483060a1fe60..8ef5e77780031 100644 --- a/packages/cubejs-oracle-driver/package.json +++ b/packages/cubejs-oracle-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-oracle-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "driver/OracleDriver.js", "dependencies": { diff --git a/packages/cubejs-pinot-driver/package.json b/packages/cubejs-pinot-driver/package.json index 0404dc1a81b19..2fca7479be2cd 100644 --- a/packages/cubejs-pinot-driver/package.json +++ b/packages/cubejs-pinot-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-pinot-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-playground/package.json b/packages/cubejs-playground/package.json index ce8b393c5a736..d2e4a92324c92 100644 --- a/packages/cubejs-playground/package.json +++ b/packages/cubejs-playground/package.json @@ -71,7 +71,7 @@ "@cubejs-client/core": "1.6.67", "@cubejs-client/react": "1.6.67", "@types/flexsearch": "^0.7.3", - "@types/node": "^20", + "@types/node": "^22", "@types/react": "^18.3.4", "@types/react-beautiful-dnd": "^13.0.0", "@types/react-dom": "^18.3.0", diff --git a/packages/cubejs-postgres-driver/package.json b/packages/cubejs-postgres-driver/package.json index 1d9c96dea5bb0..3a0f761b8c52c 100644 --- a/packages/cubejs-postgres-driver/package.json +++ b/packages/cubejs-postgres-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-postgres-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-prestodb-driver/package.json b/packages/cubejs-prestodb-driver/package.json index bfe8dd79b95ce..29a92ed13bf5b 100644 --- a/packages/cubejs-prestodb-driver/package.json +++ b/packages/cubejs-prestodb-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-prestodb-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-query-orchestrator/package.json b/packages/cubejs-query-orchestrator/package.json index a5e0a340a8ba4..a6689762ba4ad 100644 --- a/packages/cubejs-query-orchestrator/package.json +++ b/packages/cubejs-query-orchestrator/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-query-orchestrator" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -39,7 +39,7 @@ "devDependencies": { "@cubejs-backend/linter": "1.6.67", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "@types/ramda": "^0.27.32", "@types/uuid": "^8.3.0", "jest": "^29", diff --git a/packages/cubejs-questdb-driver/package.json b/packages/cubejs-questdb-driver/package.json index 0982c87f8fe06..aa68523644818 100644 --- a/packages/cubejs-questdb-driver/package.json +++ b/packages/cubejs-questdb-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-questdb-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-redshift-driver/package.json b/packages/cubejs-redshift-driver/package.json index a3bc5c794739d..2d8d32b4e779f 100644 --- a/packages/cubejs-redshift-driver/package.json +++ b/packages/cubejs-redshift-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-postgres-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-schema-compiler/package.json b/packages/cubejs-schema-compiler/package.json index 8ab647455d750..41e5fd2b4a9ce 100644 --- a/packages/cubejs-schema-compiler/package.json +++ b/packages/cubejs-schema-compiler/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-schema-compiler" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src" @@ -69,7 +69,7 @@ "@types/inflection": "^1.5.28", "@types/jest": "^29", "@types/js-yaml": "^4.0.9", - "@types/node": "^20", + "@types/node": "^22", "@types/node-dijkstra": "^2.5.6", "@types/ramda": "^0.27.34", "@types/sqlstring": "^2.3.0", diff --git a/packages/cubejs-server-core/package.json b/packages/cubejs-server-core/package.json index 74fc98cdf0e9d..bc5112b8df0cb 100644 --- a/packages/cubejs-server-core/package.json +++ b/packages/cubejs-server-core/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-server-core" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "index.js", "types": "dist/src/index.d.ts", @@ -69,7 +69,7 @@ "@types/fs-extra": "^9.0.8", "@types/jest": "^29", "@types/jsonwebtoken": "^9.0.2", - "@types/node": "^20", + "@types/node": "^22", "@types/node-fetch": "^2.5.7", "@types/ramda": "^0.27.34", "@types/uuid": "^8.3.0", diff --git a/packages/cubejs-server/package.json b/packages/cubejs-server/package.json index 275e7fd0d432d..fcf7da509a24f 100644 --- a/packages/cubejs-server/package.json +++ b/packages/cubejs-server/package.json @@ -10,7 +10,7 @@ "directory": "packages/cubejs-server" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "index.js", "typings": "dist/src/index.d.ts", @@ -68,7 +68,7 @@ "@types/cors": "^2.8.8", "@types/express": "^4.17.21", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "@types/semver": "^7.5.8", "@types/ws": "^7.2.9", "@types/yarnpkg__lockfile": "^1.1.4", diff --git a/packages/cubejs-sqlite-driver/package.json b/packages/cubejs-sqlite-driver/package.json index 5270fb5205ee9..4be6cbb9faf55 100644 --- a/packages/cubejs-sqlite-driver/package.json +++ b/packages/cubejs-sqlite-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-sqlite-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "driver/SqliteDriver.js", "typings": "driver/index.d.ts", diff --git a/packages/cubejs-templates/package.json b/packages/cubejs-templates/package.json index a992bbb1e69c4..ff4d49ced12ce 100644 --- a/packages/cubejs-templates/package.json +++ b/packages/cubejs-templates/package.json @@ -12,7 +12,7 @@ "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "scripts": { "build": "rm -rf dist && npm run tsc", diff --git a/packages/cubejs-testing-drivers/package.json b/packages/cubejs-testing-drivers/package.json index 34a82e7bf6962..338005c75ddc4 100644 --- a/packages/cubejs-testing-drivers/package.json +++ b/packages/cubejs-testing-drivers/package.json @@ -12,7 +12,7 @@ "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "scripts": { "tsc": "tsc", @@ -97,7 +97,7 @@ "@cubejs-client/ws-transport": "1.6.67", "@jest/globals": "^29", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "dotenv": "^16.0.3", "env-var": "^6.3.0", "fs-extra": "^11.1.1", diff --git a/packages/cubejs-testing-shared/package.json b/packages/cubejs-testing-shared/package.json index 874bdc16be1cb..5e4285b6dccbd 100644 --- a/packages/cubejs-testing-shared/package.json +++ b/packages/cubejs-testing-shared/package.json @@ -12,7 +12,7 @@ "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "scripts": { "build": "rm -rf dist && npm run tsc", @@ -39,7 +39,7 @@ "@jest/globals": "^29", "@types/dedent": "^0.7.0", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "jest": "^29", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-testing/package.json b/packages/cubejs-testing/package.json index 8435ed84e4bc0..b31c8f7fd2899 100644 --- a/packages/cubejs-testing/package.json +++ b/packages/cubejs-testing/package.json @@ -12,7 +12,7 @@ "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "scripts": { "cypress:open": "kill-port 4000 && TEST_PLAYGROUND_PORT=3080 yarn cypress:birdbox", @@ -125,7 +125,7 @@ "@types/dedent": "^0.7.0", "@types/http-proxy": "^1.17.5", "@types/jest": "^29", - "@types/node": "^20", + "@types/node": "^22", "cypress": "14.0.0", "cypress-image-snapshot": "^4.0.1", "cypress-localstorage-commands": "^1.4.5", diff --git a/packages/cubejs-trino-driver/package.json b/packages/cubejs-trino-driver/package.json index 0fdcc11eeb121..1e19b150b1e0f 100644 --- a/packages/cubejs-trino-driver/package.json +++ b/packages/cubejs-trino-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-trino-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "files": [ "dist/src", diff --git a/packages/cubejs-vertica-driver/package.json b/packages/cubejs-vertica-driver/package.json index c746b2424ca46..a09b79302cf67 100644 --- a/packages/cubejs-vertica-driver/package.json +++ b/packages/cubejs-vertica-driver/package.json @@ -9,7 +9,7 @@ "directory": "packages/cubejs-vertica-driver" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=17.0.0" + "node": ">=20.0.0" }, "main": "src/VerticaDriver.js", "scripts": { diff --git a/yarn.lock b/yarn.lock index 6be3ea908c535..14b3542da9788 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8604,12 +8604,12 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=13.7.0", "@types/node@>=18", "@types/node@^18", "@types/node@^20", "@types/node@^22.5.5": - version "20.17.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.28.tgz#c10436f3a3c996f535919a9b082e2c47f19c40a1" - integrity sha512-DHlH/fNL6Mho38jTy7/JT7sn2wnXI+wULR6PV4gy4VHLVvnrV/d3pHAMQHhc4gjdLmK2ZiPoMxzp6B3yRajLSQ== +"@types/node@*", "@types/node@>=13.7.0", "@types/node@>=18", "@types/node@^18", "@types/node@^22", "@types/node@^22.5.5": + version "22.19.21" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.21.tgz#5c9d843ea385b31ee937a9f743443830620a32de" + integrity sha512-VMeFBSCKQKmm2swI2kW51SFusDqekC6q9trBCvJ/JliDchFSuoYYKN7yVNjPthP1HKZcx3U1gI/wTcEBjEFKTA== dependencies: - undici-types "~6.19.2" + undici-types "~6.21.0" "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -25354,10 +25354,10 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" -undici-types@~6.19.2: - version "6.19.8" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" - integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== undici@^5.29.0: version "5.29.0" From 93ff587457dba70801d84051b5c26efc44dfbd96 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 11 Jun 2026 21:20:08 +0200 Subject: [PATCH 09/24] feat(docker): Upgrade Node.js to v24 (24.18.0) --- .github/workflows/bridge-tests.yml | 2 +- .github/workflows/drivers-tests.yml | 6 +-- .github/workflows/master.yml | 4 +- .github/workflows/post-release.yml | 10 ++-- .github/workflows/publish.yml | 10 ++-- .github/workflows/push.yml | 38 +++++++++------ .github/workflows/rust-cubesql.yml | 14 +++--- .nvmrc | 2 +- packages/cubejs-docker/dev.Dockerfile | 2 +- .../latest-debian-jdk.Dockerfile | 4 +- packages/cubejs-docker/latest.Dockerfile | 4 +- packages/cubejs-docker/local.Dockerfile | 2 +- .../cubejs-docker/testing-drivers.Dockerfile | 2 +- packages/cubejs-jdbc-driver/package.json | 4 +- yarn.lock | 47 +++++++++---------- 15 files changed, 79 insertions(+), 72 deletions(-) diff --git a/.github/workflows/bridge-tests.yml b/.github/workflows/bridge-tests.yml index 30469aa1df583..cb6e2348b9dd1 100644 --- a/.github/workflows/bridge-tests.yml +++ b/.github/workflows/bridge-tests.yml @@ -36,7 +36,7 @@ jobs: - name: Install Node.js uses: actions/setup-node@v4 with: - node-version: 22.x + node-version: 24.x - name: Set Yarn version run: yarn policies set-version v1.22.22 - name: Get yarn cache directory path diff --git a/.github/workflows/drivers-tests.yml b/.github/workflows/drivers-tests.yml index 67db218a8567c..e323250ab0911 100644 --- a/.github/workflows/drivers-tests.yml +++ b/.github/workflows/drivers-tests.yml @@ -98,7 +98,7 @@ jobs: name: Build native Linux ${{ matrix.node-version }} ${{ matrix.target }} Python ${{ matrix.python-version }} strategy: matrix: - node-version: [ 22 ] + node-version: [ 24.18.0 ] python-version: [ "fallback" ] target: [ "x86_64-unknown-linux-gnu" ] fail-fast: false @@ -308,10 +308,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Node.js 22.x + - name: Install Node.js uses: actions/setup-node@v4 with: - node-version: 22.x + node-version-file: '.nvmrc' - name: Configure `yarn` run: yarn policies set-version v1.22.22 diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index f1977a9a2d00d..555c390366e80 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -64,10 +64,10 @@ jobs: workspaces: ./rust/cubesql -> target key: cubesql-x86_64-unknown-linux-gnu shared-key: cubesql-x86_64-unknown-linux-gnu - - name: Install Node.js 22 + - name: Install Node.js 24 uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 - name: Install Yarn run: npm install -g yarn - name: Set Yarn version diff --git a/.github/workflows/post-release.yml b/.github/workflows/post-release.yml index 13663db586b1f..25bcfa04d0f77 100644 --- a/.github/workflows/post-release.yml +++ b/.github/workflows/post-release.yml @@ -28,7 +28,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [22.x] + node-version: [24.x] steps: - name: Checkout uses: actions/checkout@v4 @@ -106,10 +106,10 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install Node.js 22.x + - name: Install Node.js 24.x uses: actions/setup-node@v4 with: - node-version: 22.x + node-version: 24.x - name: Restore lerna uses: actions/cache@v4 with: @@ -170,10 +170,10 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install Node.js 22.x + - name: Install Node.js 24.x uses: actions/setup-node@v4 with: - node-version: 22.x + node-version: 24.x - name: Restore lerna uses: actions/cache@v4 with: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4b9dc62ac1101..1c9fea2ad1fdf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -27,10 +27,10 @@ jobs: # override: true # this is by default on rustflags: "" components: rustfmt - - name: Install Node.js 22.x + - name: Install Node.js 24.x uses: actions/setup-node@v4 with: - node-version: 22.x + node-version: 24.x registry-url: 'https://registry.npmjs.org/' - name: Upgrade npm for OIDC support run: npm install -g npm@11.7.0 @@ -75,7 +75,7 @@ jobs: name: Build native Linux ${{ matrix.node-version }} ${{ matrix.target }} Python ${{ matrix.python-version }} strategy: matrix: - node-version: [22] + node-version: [24] python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "fallback"] target: ["x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu"] include: @@ -154,7 +154,7 @@ jobs: name: Build ${{ matrix.os-version }} ${{ matrix.target }} ${{ matrix.node-version }} Python ${{ matrix.python-version }} strategy: matrix: - node-version: [22.x] + node-version: [24.x] target: ["x86_64-apple-darwin", "aarch64-apple-darwin"] python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "fallback"] include: @@ -243,7 +243,7 @@ jobs: name: Build ${{ matrix.os-version }} ${{ matrix.node-version }} Python ${{ matrix.python-version }} strategy: matrix: - node-version: [22.x] + node-version: [24.x] python-version: ["fallback"] os-version: [windows-2022] include: diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index ed9029860fd5f..9071ad04d0940 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -75,8 +75,10 @@ jobs: strategy: matrix: # Current docker version + next LTS - # TODO: Add 24 after it's been released - node-version: [22.x] + # TODO: Re-add 26.x after cubejs-duckdb-driver migrates off the frozen `duckdb` + # package (no prebuilt binaries for Node.js 26) + # node-version: [24.x, 26.x] + node-version: [24.x] # Don't forget to update build-native-release python-version: [3.11] fail-fast: false @@ -134,16 +136,16 @@ jobs: - name: Lerna test run: yarn lerna run --concurrency 1 --stream --no-prefix unit - name: Fix lcov paths - if: (matrix.node-version == '22.x') + if: (matrix.node-version == '24.x') run: | ./.github/actions/codecov-fix.sh - name: Combine all fixed LCOV files - if: (matrix.node-version == '22.x') + if: (matrix.node-version == '24.x') run: | echo "" > ./combined-unit.lcov find ./packages -type f -name lcov.fixed.info -exec cat {} + >> ./combined-unit.lcov || true - name: Upload coverage artifact - if: (matrix.node-version == '22.x') + if: (matrix.node-version == '24.x') uses: actions/upload-artifact@v4 with: name: coverage-unit @@ -165,10 +167,10 @@ jobs: # override: true # this is by default on rustflags: "" components: rustfmt - - name: Install Node.js 22.x + - name: Install Node.js 24.x uses: actions/setup-node@v4 with: - node-version: 22.x + node-version: 24.x - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "dir=$(yarn cache dir)" >> "$GITHUB_OUTPUT" @@ -294,10 +296,10 @@ jobs: workspaces: ./packages/cubejs-backend-native key: native-${{ runner.OS }}-x86_64-unknown-linux-gnu shared-key: native-${{ runner.OS }}-x86_64-unknown-linux-gnu - - name: Install Node.js 22 + - name: Install Node.js 24 uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 - name: Install Yarn run: npm install -g yarn - name: Set Yarn version @@ -326,7 +328,7 @@ jobs: strategy: matrix: - node-version: [22.x] + node-version: [24.x] fail-fast: false steps: @@ -403,7 +405,10 @@ jobs: strategy: matrix: - node-version: [22.x] + # TODO: Re-add 26.x after cubejs-duckdb-driver migrates off the frozen `duckdb` + # package (no prebuilt binaries for Node.js 26) + # node-version: [24.x, 26.x] + node-version: [24.x] # Vertica tests are disabled because around 20.08.2025 someone # totally removed all vertica-ce docker repository from dockerhub. # @see https://github.com/vertica/vertica-containers/issues/64 @@ -417,10 +422,10 @@ jobs: use_tesseract_sql_planner: [ false ] include: - db: postgres - node-version: 22.x + node-version: 24.x use_tesseract_sql_planner: true - db: mssql - node-version: 22.x + node-version: 24.x use_tesseract_sql_planner: true - db: firebolt node-version: 22.x @@ -521,13 +526,16 @@ jobs: DRIVERS_TESTS_SNOWFLAKE_CUBEJS_DB_USER: ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_SNOWFLAKE_USER }} DRIVERS_TESTS_SNOWFLAKE_CUBEJS_DB_PASS: ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_SNOWFLAKE_PASS }} - name: Fix lcov paths + if: (matrix.node-version == '24.x') run: | ./.github/actions/codecov-fix.sh - name: Combine all fixed LCOV files + if: (matrix.node-version == '24.x') run: | echo "" > ./combined-integration-${{ matrix.db }}-${{ matrix.use_tesseract_sql_planner }}.lcov find ./packages -type f -name lcov.fixed.info -exec cat {} + >> ./combined-integration-${{ matrix.db }}-${{ matrix.use_tesseract_sql_planner }}.lcov || true - name: Upload coverage artifact + if: (matrix.node-version == '24.x') uses: actions/upload-artifact@v4 with: name: coverage-integration-${{ matrix.db }}-${{ matrix.use_tesseract_sql_planner }} @@ -541,7 +549,7 @@ jobs: strategy: matrix: - node-version: [ 22.x ] + node-version: [ 24.x ] python-version: [ 3.11 ] use_tesseract_sql_planner: [ true, false ] fail-fast: false @@ -636,7 +644,7 @@ jobs: - 5000:5000 strategy: matrix: - node-version: [ 22 ] + node-version: [ 24 ] target: [ "x86_64-unknown-linux-gnu" ] dockerfile: - dev.Dockerfile diff --git a/.github/workflows/rust-cubesql.yml b/.github/workflows/rust-cubesql.yml index b3dbf5c3787ac..a5a089855b97b 100644 --- a/.github/workflows/rust-cubesql.yml +++ b/.github/workflows/rust-cubesql.yml @@ -120,14 +120,16 @@ jobs: strategy: matrix: # Current used version + 1 LTS - # TODO: Add 24 after it's been released (don't forget to uncomment excludes below!) - node-version: [22] + # TODO: Re-add 26 after cubejs-duckdb-driver migrates off the frozen `duckdb` + # package (no prebuilt binaries for Node.js 26, don't forget to uncomment excludes below!) + # node-version: [24, 26] + node-version: [24] python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "fallback"] target: ["x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu"] # minimize number of jobs exclude: -# TODO: uncomment after adding v24 -# - node-version: 22 +# TODO: uncomment after re-adding v26 +# - node-version: 26 # target: "aarch64-unknown-linux-gnu" - python-version: 3.10 target: "aarch64-unknown-linux-gnu" @@ -225,7 +227,7 @@ jobs: strategy: matrix: # We do not need to test under all versions, we do it under linux - node-version: [22.x] + node-version: [24.x] target: ["x86_64-apple-darwin", "aarch64-apple-darwin"] include: - target: x86_64-apple-darwin @@ -326,7 +328,7 @@ jobs: strategy: matrix: # We do not need to test under all versions, we do it under linux - node-version: [22.x] + node-version: [24.x] os-version: [windows-2022] python-version: ["fallback"] fail-fast: false diff --git a/.nvmrc b/.nvmrc index 85e502778f623..ca5c350055ccb 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.22.0 +24.18.0 diff --git a/packages/cubejs-docker/dev.Dockerfile b/packages/cubejs-docker/dev.Dockerfile index 9cf9ca88cbd16..0e032e85a3c07 100644 --- a/packages/cubejs-docker/dev.Dockerfile +++ b/packages/cubejs-docker/dev.Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.22.0-bookworm-slim AS base +FROM node:24.18.0-bookworm-slim AS base ARG IMAGE_VERSION=dev diff --git a/packages/cubejs-docker/latest-debian-jdk.Dockerfile b/packages/cubejs-docker/latest-debian-jdk.Dockerfile index 76f756b8421d9..04942349f0bef 100644 --- a/packages/cubejs-docker/latest-debian-jdk.Dockerfile +++ b/packages/cubejs-docker/latest-debian-jdk.Dockerfile @@ -1,5 +1,5 @@ # syntax=docker/dockerfile-upstream:master-experimental -FROM node:22.22.0-bookworm-slim AS builder +FROM node:24.18.0-bookworm-slim AS builder WORKDIR /cube COPY . . @@ -22,7 +22,7 @@ RUN yarn install --prod \ && rm -rf /cube/node_modules/duckdb/src \ && yarn cache clean -FROM node:22.22.0-bookworm-slim +FROM node:24.18.0-bookworm-slim ARG IMAGE_VERSION=unknown diff --git a/packages/cubejs-docker/latest.Dockerfile b/packages/cubejs-docker/latest.Dockerfile index 78f1b59be2af0..a963e4a44c3ff 100644 --- a/packages/cubejs-docker/latest.Dockerfile +++ b/packages/cubejs-docker/latest.Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.22.0-bookworm-slim AS builder +FROM node:24.18.0-bookworm-slim AS builder WORKDIR /cube COPY . . @@ -21,7 +21,7 @@ RUN yarn install --prod \ && rm -rf /cube/node_modules/duckdb/src \ && yarn cache clean -FROM node:22.22.0-bookworm-slim +FROM node:24.18.0-bookworm-slim ARG IMAGE_VERSION=unknown diff --git a/packages/cubejs-docker/local.Dockerfile b/packages/cubejs-docker/local.Dockerfile index fca70e19193b9..8f5b5b709e8ec 100644 --- a/packages/cubejs-docker/local.Dockerfile +++ b/packages/cubejs-docker/local.Dockerfile @@ -1,7 +1,7 @@ ARG DEV_BUILD_IMAGE=cubejs/cube:build FROM $DEV_BUILD_IMAGE AS build -FROM node:22.22.0-bookworm-slim +FROM node:24.18.0-bookworm-slim ARG IMAGE_VERSION=dev diff --git a/packages/cubejs-docker/testing-drivers.Dockerfile b/packages/cubejs-docker/testing-drivers.Dockerfile index a5f9427a1721e..3ffac40e23be2 100644 --- a/packages/cubejs-docker/testing-drivers.Dockerfile +++ b/packages/cubejs-docker/testing-drivers.Dockerfile @@ -1,7 +1,7 @@ ###################################################################### # Base image # ###################################################################### -FROM node:22.22.0-bookworm-slim AS base +FROM node:24.18.0-bookworm-slim AS base ARG IMAGE_VERSION=dev diff --git a/packages/cubejs-jdbc-driver/package.json b/packages/cubejs-jdbc-driver/package.json index 7f24cc831ad1d..52cec821bda25 100644 --- a/packages/cubejs-jdbc-driver/package.json +++ b/packages/cubejs-jdbc-driver/package.json @@ -31,8 +31,8 @@ "sqlstring": "^2.3.0" }, "optionalDependencies": { - "@cubejs-backend/jdbc": "^0.8.1", - "java": "^0.14.0" + "@cubejs-backend/jdbc": "^0.9.0", + "java": "^0.18.0" }, "license": "Apache-2.0", "eslintConfig": { diff --git a/yarn.lock b/yarn.lock index 14b3542da9788..4fac8e5dce6a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,9 +13,9 @@ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== "@achrinza/node-ipc@^9.2.5": - version "9.2.9" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz#ab4815d9b16f1c83a479fe8791522a3abebb1c6a" - integrity sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ== + version "9.2.10" + resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.10.tgz#aa17def30e134e8c0a8738ffc13e50c08a753ff0" + integrity sha512-rCkw57K82y1XA9KwBmuMrupFQr9VOS4Rn77vW2UD2j0+HjlP/npSON9COkUIfocd95B4wv5EpfWMr6lGD4lN3A== dependencies: "@node-ipc/js-queue" "2.0.3" event-pubsub "4.3.0" @@ -2799,14 +2799,13 @@ resolved "https://registry.yarnpkg.com/@cubejs-backend/dotenv/-/dotenv-9.0.2.tgz#c3679091b702f0fd38de120c5a63943fcdc0dcbf" integrity sha512-yC1juhXEjM7K97KfXubDm7WGipd4Lpxe+AT8XeTRE9meRULrKlw0wtE2E8AQkGOfTBn+P1SCkePQ/BzIbOh1VA== -"@cubejs-backend/jdbc@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cubejs-backend/jdbc/-/jdbc-0.8.1.tgz#32e21fcbf35f91028864396503620c83c2779261" - integrity sha512-dM/9V4IFe6vEcgHqAAAJ84EUnjxk1KjqJW26q2zKvDDW+31Fk9WzLEbzR1KdfYySWK7j+rMdOqGvHp8w89XGTQ== +"@cubejs-backend/jdbc@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@cubejs-backend/jdbc/-/jdbc-0.9.0.tgz#793494ba9e17aab94d3d776e80d7c74837390fd9" + integrity sha512-6CupwVoqA9riWAyBlU3+HwRdVKBY85mX8tgSBQKJxXN5wcJYV2drOErnhY6C0uIshWuMPnFUHKme00JON29wWQ== dependencies: async "^3.2.6" - java "^0.14" - lodash "^4.17.21" + java "^0.18" uuid "^11.1.0" winston "^3.17.0" @@ -10405,7 +10404,7 @@ async@^2.6.4: dependencies: lodash "^4.17.14" -async@^3.2.0, async@^3.2.3, async@^3.2.4, async@^3.2.5, async@^3.2.6: +async@^3.2.0, async@^3.2.3, async@^3.2.4, async@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== @@ -16988,17 +16987,15 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -java@^0.14, java@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/java/-/java-0.14.0.tgz#28528f462aa23cca7b99e07fbc3130460ff70493" - integrity sha512-fXqNZvzQTl9cOFK4Rx7lobpgdWh9HKyjD56aerCZ9ETrVepvI6/wH1PUodieUc2ekf4cUOsHfM7aliWZAwU5Zg== +java@^0.18, java@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/java/-/java-0.18.0.tgz#8a339bc872c76755909f0e376cd465fa1985e997" + integrity sha512-DX9IJcYRMIGII4MIbw27xsU64h4EBfa+JHo0WpDQ2T61RYiRJXnEWdr4DNcTl18T6l8KjQGomEvdCSUYFKvkUw== dependencies: - async "^3.2.5" find-java-home "^2.0.0" - glob "^10.3.10" - lodash "^4.17.21" - nan "^2.18.0" - node-gyp "^10.0.1" + glob "^11.0.3" + nan "^2.23.0" + node-gyp "^11.5.0" javascript-stringify@^2.0.1: version "2.1.0" @@ -19350,10 +19347,10 @@ named-placeholders@^1.1.3: dependencies: lru-cache "^7.14.1" -nan@^2.18.0, nan@^2.19.0, nan@^2.20.0: - version "2.22.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" - integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== +nan@^2.19.0, nan@^2.20.0, nan@^2.23.0: + version "2.27.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.27.0.tgz#804e389f4c0e39b729a17eca85c80ebc4355c4c4" + integrity sha512-hC+0LidcL3XE4rp1C4H54KujgXKzbfyTngZTwBByQxsOxCEKZT0MPQ4hOKUH2jU1OYstqdDH4onyHPDzcV0XdQ== nanoid@^3.3.11: version "3.3.11" @@ -19599,7 +19596,7 @@ node-gyp@8.x: tar "^6.1.2" which "^2.0.2" -node-gyp@^10.0.0, node-gyp@^10.0.1: +node-gyp@^10.0.0: version "10.3.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.3.1.tgz#1dd1a1a1c6c5c59da1a76aea06a062786b2c8a1a" integrity sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ== @@ -19615,7 +19612,7 @@ node-gyp@^10.0.0, node-gyp@^10.0.1: tar "^6.2.1" which "^4.0.0" -node-gyp@^11.0.0: +node-gyp@^11.0.0, node-gyp@^11.5.0: version "11.5.0" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-11.5.0.tgz#82661b5f40647a7361efe918e3cea76d297fcc56" integrity sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ== From b73cd697cf3e29d313bef2a8a99f32f4c94722db Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Fri, 12 Jun 2026 11:12:46 +0200 Subject: [PATCH 10/24] chore(client-vue3): Drop legacy vue toolkit Toolkit has a dependecy on @achrinza/node-ipc that blocks migration for new Node.js everytime. More funny, that it still doesn't support Node.js 26, which I wan to declare in testing matrix. We don't define any .vue files, that's why we can use babel without anything especiall, moreover we build this package outside it folder. We define config in the root directory for rollup bundler # Conflicts: # yarn.lock --- packages/cubejs-client-react/package.json | 1 + packages/cubejs-client-vue3/babel.config.js | 3 +- packages/cubejs-client-vue3/jest.config.js | 3 +- packages/cubejs-client-vue3/package.json | 27 +- yarn.lock | 3278 +++++-------------- 5 files changed, 858 insertions(+), 2454 deletions(-) diff --git a/packages/cubejs-client-react/package.json b/packages/cubejs-client-react/package.json index 7683e8fd92700..0a885811cafcd 100644 --- a/packages/cubejs-client-react/package.json +++ b/packages/cubejs-client-react/package.json @@ -31,6 +31,7 @@ "devDependencies": { "@types/ramda": "^0.27.40", "@types/react": "^16.9.41", + "babel-eslint": "^9.0.0", "eslint": "^7.21.0", "eslint-config-airbnb": "^18.0.1", "eslint-config-airbnb-base": "^14.0.0", diff --git a/packages/cubejs-client-vue3/babel.config.js b/packages/cubejs-client-vue3/babel.config.js index f39476ec32b69..c74fb53e2804f 100644 --- a/packages/cubejs-client-vue3/babel.config.js +++ b/packages/cubejs-client-vue3/babel.config.js @@ -1,4 +1,3 @@ module.exports = { - presets: ['@vue/app'], - plugins: ['@babel/plugin-proposal-optional-chaining'], + presets: [['@babel/preset-env', { targets: { node: 'current' } }]], }; diff --git a/packages/cubejs-client-vue3/jest.config.js b/packages/cubejs-client-vue3/jest.config.js index 3fd37846fdd0c..529a9b1cb9b64 100644 --- a/packages/cubejs-client-vue3/jest.config.js +++ b/packages/cubejs-client-vue3/jest.config.js @@ -1,7 +1,6 @@ module.exports = { - moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], + moduleFileExtensions: ['js', 'jsx', 'json'], transform: { - '^.+\\.vue$': '@vue/vue3-jest', '^.+\\.js$': 'babel-jest', }, transformIgnorePatterns: ['/node_modules/'], diff --git a/packages/cubejs-client-vue3/package.json b/packages/cubejs-client-vue3/package.json index ff06ac9a4a82b..85def322da52b 100644 --- a/packages/cubejs-client-vue3/package.json +++ b/packages/cubejs-client-vue3/package.json @@ -14,8 +14,7 @@ "Cube Dev, Inc." ], "scripts": { - "serve": "vue-cli-service serve", - "lint": "vue-cli-service lint", + "lint": "eslint src tests", "test": "jest", "unit": "npm run test:unit", "test:unit": "jest", @@ -32,18 +31,11 @@ "ramda": "^0.27.0" }, "devDependencies": { - "@babel/plugin-proposal-optional-chaining": "^7", - "@vue/babel-preset-app": "^5", - "@vue/cli-plugin-babel": "^5.0", - "@vue/cli-plugin-eslint": "^5.0", - "@vue/cli-service": "^5.0", + "@babel/core": "^7", + "@babel/preset-env": "^7", "@vue/test-utils": "^2.4", - "@vue/vue3-jest": "^29", - "babel-core": "7.0.0-bridge.0", - "babel-eslint": "^10.1.0", "babel-jest": "^29", "eslint": "^7.21.0", - "eslint-plugin-vue": "^6.2.1", "jest": "^29", "jest-environment-jsdom": "^29", "vue": "^3.0" @@ -54,20 +46,17 @@ "eslintConfig": { "root": true, "env": { - "node": true + "es2021": true, + "node": true, + "jest": true }, "extends": [ - "plugin:vue/essential", "eslint:recommended" ], "rules": {}, "parserOptions": { - "parser": "babel-eslint" - } - }, - "postcss": { - "plugins": { - "autoprefixer": {} + "ecmaVersion": 2021, + "sourceType": "module" } }, "browserslist": [ diff --git a/yarn.lock b/yarn.lock index 4fac8e5dce6a6..7d17a1dacf207 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,15 +12,6 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@achrinza/node-ipc@^9.2.5": - version "9.2.10" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.10.tgz#aa17def30e134e8c0a8738ffc13e50c08a753ff0" - integrity sha512-rCkw57K82y1XA9KwBmuMrupFQr9VOS4Rn77vW2UD2j0+HjlP/npSON9COkUIfocd95B4wv5EpfWMr6lGD4lN3A== - dependencies: - "@node-ipc/js-queue" "2.0.3" - event-pubsub "4.3.0" - js-message "1.0.7" - "@ampproject/remapping@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" @@ -1378,19 +1369,19 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.7.tgz#f2fbbfea87c44a21590ec515b778b2c26d8866e7" + integrity sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw== dependencies: - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.29.7" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.8", "@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" - integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.8", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.7.tgz#6f0237f0f36d2e51c0570a636faed9d2d0efe629" + integrity sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg== "@babel/core@7.25.2": version "7.25.2" @@ -1434,20 +1425,20 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.11.6", "@babel/core@^7.12.16", "@babel/core@^7.12.3", "@babel/core@^7.13.8", "@babel/core@^7.23.9", "@babel/core@^7.24", "@babel/core@^7.24.5", "@babel/core@^7.25.2", "@babel/core@^7.3.3": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" - integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helpers" "^7.28.4" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.5" - "@babel/types" "^7.28.5" +"@babel/core@^7", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.8", "@babel/core@^7.23.9", "@babel/core@^7.24", "@babel/core@^7.24.5", "@babel/core@^7.25.2", "@babel/core@^7.3.3": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.7.tgz#80c10b17248082968b57a857b91640971f2070f7" + integrity sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helpers" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -1466,13 +1457,13 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/generator@^7.24", "@babel/generator@^7.25.0", "@babel/generator@^7.26.10", "@babel/generator@^7.28.5", "@babel/generator@^7.7.2": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" - integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== +"@babel/generator@^7.24", "@babel/generator@^7.25.0", "@babel/generator@^7.26.10", "@babel/generator@^7.29.7", "@babel/generator@^7.7.2": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.7.tgz#cca0b8827e6bcf3ba176788e7f3b180ad6db2fa3" + integrity sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ== dependencies: - "@babel/parser" "^7.28.5" - "@babel/types" "^7.28.5" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -1491,124 +1482,124 @@ dependencies: "@babel/types" "^7.25.9" -"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" - integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== +"@babel/helper-annotate-as-pure@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz#c70fe3c6ecbdc3fd2dd1b0f498428b88b82ce47f" + integrity sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw== dependencies: - "@babel/types" "^7.27.3" + "@babel/types" "^7.29.7" -"@babel/helper-compilation-targets@^7.12.16", "@babel/helper-compilation-targets@^7.25.2", "@babel/helper-compilation-targets@^7.26.5", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== +"@babel/helper-compilation-targets@^7.25.2", "@babel/helper-compilation-targets@^7.26.5", "@babel/helper-compilation-targets@^7.28.6", "@babel/helper-compilation-targets@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz#7a1def704302401c47f64fa85589e974ae217042" + integrity sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g== dependencies: - "@babel/compat-data" "^7.27.2" - "@babel/helper-validator-option" "^7.27.1" + "@babel/compat-data" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3", "@babel/helper-create-class-features-plugin@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz#472d0c28028850968979ad89f173594a6995da46" - integrity sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-member-expression-to-functions" "^7.28.5" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.28.5" +"@babel/helper-create-class-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz#6eddf286f2ec418f740c91d60a83347c55838ddd" + integrity sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/traverse" "^7.29.7" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" - integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz#5d4c3f928f315cf6c4184ea2fc3b5b38745b2430" + integrity sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-annotate-as-pure" "^7.29.7" regexpu-core "^6.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.3", "@babel/helper-define-polyfill-provider@^0.6.5": - version "0.6.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" - integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.3", "@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1" + integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - debug "^4.4.1" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" lodash.debounce "^4.0.8" - resolve "^1.22.10" + resolve "^1.22.11" -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== +"@babel/helper-globals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz#f04a96fbd8473241b1079243f5b3f03a3010ab7b" + integrity sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA== -"@babel/helper-member-expression-to-functions@^7.27.1", "@babel/helper-member-expression-to-functions@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" - integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== +"@babel/helper-member-expression-to-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz#8dbdb3ce0b5c487e1aec10e13c9a43a500814df8" + integrity sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg== dependencies: - "@babel/traverse" "^7.28.5" - "@babel/types" "^7.28.5" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.25.9", "@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.25.9", "@babel/helper-module-imports@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz#ef25048a518e828d7393fac5882ddd73921d7396" + integrity sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g== dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helper-module-transforms@^7.25.2", "@babel/helper-module-transforms@^7.26.0", "@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6" - integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== +"@babel/helper-module-transforms@^7.25.2", "@babel/helper-module-transforms@^7.26.0", "@babel/helper-module-transforms@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz#b062747a5997ba138637201328bbff77960574ae" + integrity sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/helper-optimise-call-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" - integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== +"@babel/helper-optimise-call-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz#77b0b5b94f1997fa9d6e3125f445227b1faf9d85" + integrity sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong== dependencies: - "@babel/types" "^7.27.1" + "@babel/types" "^7.29.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.29.7", "@babel/helper-plugin-utils@^7.8.0": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz#c0a0766f1a13617d8a17407d7ab8f9d486225ea4" + integrity sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw== -"@babel/helper-remap-async-to-generator@^7.25.9", "@babel/helper-remap-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" - integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== +"@babel/helper-remap-async-to-generator@^7.25.9", "@babel/helper-remap-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz#34b1f68dd75b86d31df781a29c3ff2df88da82e6" + integrity sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-wrap-function" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-wrap-function" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/helper-replace-supers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" - integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== +"@babel/helper-replace-supers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz#bc3c3964329043c79112e513c1b198f16589ac21" + integrity sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ== dependencies: - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" - integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== +"@babel/helper-skip-transparent-expression-wrappers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz#50c95c7e4c4f54936cfa0116428edc559862d551" + integrity sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ== dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" "@babel/helper-split-export-declaration@7.24.7": version "7.24.7" @@ -1617,37 +1608,37 @@ dependencies: "@babel/types" "^7.24.7" -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== +"@babel/helper-string-parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz#7f0871d99824d23137d60f86fcf6130fd5a1b51f" + integrity sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw== -"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== +"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz#bd87084ced0c796ec46bda492de6e83d29e89fc2" + integrity sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg== -"@babel/helper-validator-option@^7.25.9", "@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== +"@babel/helper-validator-option@^7.25.9", "@babel/helper-validator-option@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz#cf315be940213b354eb4abcc0bd01ebe3f73bc2a" + integrity sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw== -"@babel/helper-wrap-function@^7.27.1": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz#fe4872092bc1438ffd0ce579e6f699609f9d0a7a" - integrity sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g== +"@babel/helper-wrap-function@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz#eec72163044548a0935e9d182bf2d547ec5ff483" + integrity sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw== dependencies: - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.3" - "@babel/types" "^7.28.2" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helpers@^7.25.0", "@babel/helpers@^7.26.10", "@babel/helpers@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827" - integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== +"@babel/helpers@^7.25.0", "@babel/helpers@^7.26.10", "@babel/helpers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.7.tgz#45abfde7548997e34376c3e69feb475cffb4a607" + integrity sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg== dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" "@babel/highlight@^7.10.4": version "7.25.9" @@ -1659,84 +1650,59 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24", "@babel/parser@^7.25.0", "@babel/parser@^7.26.10", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5", "@babel/parser@^7.7.0": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" - integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== - dependencies: - "@babel/types" "^7.28.5" - -"@babel/parser@^7.29.0": - version "7.29.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.2.tgz#58bd50b9a7951d134988a1ae177a35ef9a703ba1" - integrity sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA== - dependencies: - "@babel/types" "^7.29.0" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" - integrity sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.5" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" - integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24", "@babel/parser@^7.25.0", "@babel/parser@^7.26.10", "@babel/parser@^7.29.0", "@babel/parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.7.tgz#837b87387cbf5ec5530cb634b3c622f68edb9334" + integrity sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/types" "^7.29.7" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" - integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz#2b535896d933a85aa92377eaa3d51a437d54a4e3" + integrity sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" - integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz#b00711a9e52bf4fe55ef7e54b2ef4a881bf804c8" + integrity sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz#373f6e2de0016f73caf8f27004f61d167743742a" - integrity sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz#2375328852026a3cf6bc0bcf2de7d236f2d5e701" + integrity sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-proposal-class-properties@^7.12.13": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== +"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz#759a857c46c4d2a6199685cf71070d81ae5f743a" + integrity sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-proposal-decorators@^7.12.13": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz#419c8acc31088e05a774344c021800f7ddc39bf0" - integrity sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz#86de98dd8e03836178231ea96c27dab26016a705" + integrity sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-syntax-decorators" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" -"@babel/plugin-proposal-optional-chaining@^7": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz#f5d892681dbf4b08753436a5e55000d5ba728d6d" + integrity sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -1764,26 +1730,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-decorators@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz#ee7dd9590aeebc05f9d4c8c0560007b05979a63d" - integrity sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-import-assertions@^7.26.0", "@babel/plugin-syntax-import-assertions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" - integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== +"@babel/plugin-syntax-import-assertions@^7.26.0", "@babel/plugin-syntax-import-assertions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz#c5cd868505269126cc18882e1f01f7b0e0e24b4e" + integrity sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-syntax-import-attributes@7.24.7": version "7.24.7" @@ -1792,12 +1744,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-attributes@^7.26.0", "@babel/plugin-syntax-import-attributes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" - integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== +"@babel/plugin-syntax-import-attributes@^7.26.0", "@babel/plugin-syntax-import-attributes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz#6115264516e95ead0f35a41710906612e447f605" + integrity sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -1813,12 +1765,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" - integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== +"@babel/plugin-syntax-jsx@^7.29.7", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz#622c16f9ad63782fe6e83dadc7e40330744b7f1e" + integrity sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -1869,12 +1821,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" - integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== +"@babel/plugin-syntax-typescript@^7.29.7", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz#7c29388932313ed58413a0343048d75d92fb5b24" + integrity sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -1884,12 +1836,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.25.9", "@babel/plugin-transform-arrow-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" - integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== +"@babel/plugin-transform-arrow-functions@^7.25.9", "@babel/plugin-transform-arrow-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz#d651343f562c03f47951bd1802195d0e10605f27" + integrity sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-async-generator-functions@7.26.8": version "7.26.8" @@ -1900,14 +1852,14 @@ "@babel/helper-remap-async-to-generator" "^7.25.9" "@babel/traverse" "^7.26.8" -"@babel/plugin-transform-async-generator-functions@^7.26.8", "@babel/plugin-transform-async-generator-functions@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" - integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== +"@babel/plugin-transform-async-generator-functions@^7.26.8", "@babel/plugin-transform-async-generator-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz#a5365617921d82a1fee33124a1102bb38a1e677d" + integrity sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" + "@babel/traverse" "^7.29.7" "@babel/plugin-transform-async-to-generator@7.25.9": version "7.25.9" @@ -1918,366 +1870,366 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-remap-async-to-generator" "^7.25.9" -"@babel/plugin-transform-async-to-generator@^7.25.9", "@babel/plugin-transform-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" - integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== +"@babel/plugin-transform-async-to-generator@^7.25.9", "@babel/plugin-transform-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz#3b5e8f1fb58133cf701bcf0baaf6f01bfd1a8889" + integrity sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" -"@babel/plugin-transform-block-scoped-functions@^7.26.5", "@babel/plugin-transform-block-scoped-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" - integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== +"@babel/plugin-transform-block-scoped-functions@^7.26.5", "@babel/plugin-transform-block-scoped-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz#96d292634434082d6687bcdb81139affedf77e8c" + integrity sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-block-scoping@^7.25.9", "@babel/plugin-transform-block-scoping@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz#e0d3af63bd8c80de2e567e690a54e84d85eb16f6" - integrity sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g== +"@babel/plugin-transform-block-scoping@^7.25.9", "@babel/plugin-transform-block-scoping@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz#baa376691ae16244cd14335422fca6900f54e17d" + integrity sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-class-properties@^7.25.9", "@babel/plugin-transform-class-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" - integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== +"@babel/plugin-transform-class-properties@^7.25.9", "@babel/plugin-transform-class-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz#034897b8a21beec163332fac2de235b14409abdf" + integrity sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-class-static-block@^7.26.0", "@babel/plugin-transform-class-static-block@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz#d1b8e69b54c9993bc558203e1f49bfc979bfd852" - integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg== +"@babel/plugin-transform-class-static-block@^7.26.0", "@babel/plugin-transform-class-static-block@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz#fed8efd19f3dd3e1114ee390707c70912778fd7c" + integrity sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-classes@^7.25.9", "@babel/plugin-transform-classes@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c" - integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA== +"@babel/plugin-transform-classes@^7.25.9", "@babel/plugin-transform-classes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz#61d3e5aaae0c838acc3204d9db7c8dc05c25815b" + integrity sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-globals" "^7.28.0" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/traverse" "^7.28.4" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-computed-properties@^7.25.9", "@babel/plugin-transform-computed-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" - integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== +"@babel/plugin-transform-computed-properties@^7.25.9", "@babel/plugin-transform-computed-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz#95028787ca31901b9a20b5c6d9605c32346f55ad" + integrity sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/template" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/template" "^7.29.7" -"@babel/plugin-transform-destructuring@^7.25.9", "@babel/plugin-transform-destructuring@^7.28.0", "@babel/plugin-transform-destructuring@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" - integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== +"@babel/plugin-transform-destructuring@^7.25.9", "@babel/plugin-transform-destructuring@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz#5781ec6947852e27b64c1165f0db431f408090e4" + integrity sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-dotall-regex@^7.25.9", "@babel/plugin-transform-dotall-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" - integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== +"@babel/plugin-transform-dotall-regex@^7.25.9", "@babel/plugin-transform-dotall-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz#b203de9740e4c7ff6b55ce436ed5313b88d70af8" + integrity sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-duplicate-keys@^7.25.9", "@babel/plugin-transform-duplicate-keys@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" - integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== +"@babel/plugin-transform-duplicate-keys@^7.25.9", "@babel/plugin-transform-duplicate-keys@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz#8f3fe721835cb7a433420841dae90afc962ea7ae" + integrity sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" - integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz#dc6c405e55c01b7657e1827a25332c4ac17e9cac" + integrity sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-dynamic-import@^7.25.9", "@babel/plugin-transform-dynamic-import@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" - integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== +"@babel/plugin-transform-dynamic-import@^7.25.9", "@babel/plugin-transform-dynamic-import@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz#a83a6faec5bab5b619adf9d0eac6c1c270123c2a" + integrity sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-explicit-resource-management@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" - integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== +"@babel/plugin-transform-explicit-resource-management@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz#65c8b9f76ec915b02a0e1df703125a0fca58abaa" + integrity sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" -"@babel/plugin-transform-exponentiation-operator@^7.26.3", "@babel/plugin-transform-exponentiation-operator@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz#7cc90a8170e83532676cfa505278e147056e94fe" - integrity sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw== +"@babel/plugin-transform-exponentiation-operator@^7.26.3", "@babel/plugin-transform-exponentiation-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz#00bf002fde8794356171f5d4df200f6bc0d5a303" + integrity sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-export-namespace-from@^7.25.9", "@babel/plugin-transform-export-namespace-from@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" - integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== +"@babel/plugin-transform-export-namespace-from@^7.25.9", "@babel/plugin-transform-export-namespace-from@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz#d6014f45cec61d7691335c6c9804204bee801d51" + integrity sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-for-of@^7.26.9", "@babel/plugin-transform-for-of@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" - integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== +"@babel/plugin-transform-for-of@^7.26.9", "@babel/plugin-transform-for-of@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz#c65a678592117717aacdb10c1b73a9cb85e830be" + integrity sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-function-name@^7.25.9", "@babel/plugin-transform-function-name@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" - integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== +"@babel/plugin-transform-function-name@^7.25.9", "@babel/plugin-transform-function-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz#8b87f8a7504dbcd96135167e3fc4f61126a7bd86" + integrity sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg== dependencies: - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-json-strings@^7.25.9", "@babel/plugin-transform-json-strings@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" - integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== +"@babel/plugin-transform-json-strings@^7.25.9", "@babel/plugin-transform-json-strings@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz#f57d63dcc05b4481c281acedcd8fc4e3e439a1d4" + integrity sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-literals@^7.25.9", "@babel/plugin-transform-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" - integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== +"@babel/plugin-transform-literals@^7.25.9", "@babel/plugin-transform-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz#b90bd47463326c2a9d779e1bd5e1f88b9f421921" + integrity sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-logical-assignment-operators@^7.25.9", "@babel/plugin-transform-logical-assignment-operators@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz#d028fd6db8c081dee4abebc812c2325e24a85b0e" - integrity sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA== +"@babel/plugin-transform-logical-assignment-operators@^7.25.9", "@babel/plugin-transform-logical-assignment-operators@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz#9b29425adf5c794967aabe4b046a046a167bac2f" + integrity sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-member-expression-literals@^7.25.9", "@babel/plugin-transform-member-expression-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" - integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== +"@babel/plugin-transform-member-expression-literals@^7.25.9", "@babel/plugin-transform-member-expression-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz#1281689fa2fefc17b110d21ebafd0fe9402d5309" + integrity sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-amd@^7.25.9", "@babel/plugin-transform-modules-amd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" - integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== +"@babel/plugin-transform-modules-amd@^7.25.9", "@babel/plugin-transform-modules-amd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz#f05ca662c8a1dc4be2f337af9c7e80369c942d6c" + integrity sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-commonjs@^7.2.0", "@babel/plugin-transform-modules-commonjs@^7.26.3", "@babel/plugin-transform-modules-commonjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" - integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== +"@babel/plugin-transform-modules-commonjs@^7.26.3", "@babel/plugin-transform-modules-commonjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz#70e6835abf2663dafbe94b8ef1f51de7351ef135" + integrity sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-systemjs@^7.25.9", "@babel/plugin-transform-modules-systemjs@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz#7439e592a92d7670dfcb95d0cbc04bd3e64801d2" - integrity sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew== +"@babel/plugin-transform-modules-systemjs@^7.25.9", "@babel/plugin-transform-modules-systemjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz#e575dd2ab9882906de120ff7dc9dee9914d8b6f3" + integrity sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ== dependencies: - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.5" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-modules-umd@^7.25.9", "@babel/plugin-transform-modules-umd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" - integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== +"@babel/plugin-transform-modules-umd@^7.25.9", "@babel/plugin-transform-modules-umd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz#391d1c0215aca6307257f2f608598dfe55feb6cf" + integrity sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" - integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz#21e75d847b31189842fa7a77703722ed4b43d27d" + integrity sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-new-target@^7.25.9", "@babel/plugin-transform-new-target@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" - integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== +"@babel/plugin-transform-new-target@^7.25.9", "@babel/plugin-transform-new-target@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz#714147ce7947e1b49cbd84137ca2e75e92b2a067" + integrity sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6", "@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" - integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6", "@babel/plugin-transform-nullish-coalescing-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz#8a54cdf88c3f50433a6173117a286195b67714cc" + integrity sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-numeric-separator@^7.25.9", "@babel/plugin-transform-numeric-separator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" - integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== +"@babel/plugin-transform-numeric-separator@^7.25.9", "@babel/plugin-transform-numeric-separator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz#0266d5cd42ab87ec40fee45a4e36483cfdcbc66a" + integrity sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-object-rest-spread@^7.25.9", "@babel/plugin-transform-object-rest-spread@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d" - integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew== +"@babel/plugin-transform-object-rest-spread@^7.25.9", "@babel/plugin-transform-object-rest-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz#e0d5060241803922c545676613cc8acbbda0d266" + integrity sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/traverse" "^7.28.4" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-object-super@^7.25.9", "@babel/plugin-transform-object-super@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" - integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== +"@babel/plugin-transform-object-super@^7.25.9", "@babel/plugin-transform-object-super@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz#e89283d14fa3c35817d4493ffc6bc649aa10e4eb" + integrity sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" -"@babel/plugin-transform-optional-catch-binding@^7.25.9", "@babel/plugin-transform-optional-catch-binding@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" - integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== +"@babel/plugin-transform-optional-catch-binding@^7.25.9", "@babel/plugin-transform-optional-catch-binding@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz#729664f79985be504eba112c51de9f71d009030b" + integrity sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-optional-chaining@^7.25.9", "@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz#8238c785f9d5c1c515a90bf196efb50d075a4b26" - integrity sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ== +"@babel/plugin-transform-optional-chaining@^7.25.9", "@babel/plugin-transform-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz#b84a1b574b3c73001023092567e16c492b720e51" + integrity sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-parameters@^7.25.9", "@babel/plugin-transform-parameters@^7.27.7": - version "7.27.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" - integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== +"@babel/plugin-transform-parameters@^7.25.9", "@babel/plugin-transform-parameters@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz#a5ddc3b9bfb534814cb8334cbeba47d9cf9db090" + integrity sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-private-methods@^7.25.9", "@babel/plugin-transform-private-methods@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" - integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== +"@babel/plugin-transform-private-methods@^7.25.9", "@babel/plugin-transform-private-methods@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz#cea8bd3ab99533892897a02999d5b752584ad145" + integrity sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-private-property-in-object@^7.25.9", "@babel/plugin-transform-private-property-in-object@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" - integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== +"@babel/plugin-transform-private-property-in-object@^7.25.9", "@babel/plugin-transform-private-property-in-object@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz#4a2f6be5aba47be7afbdb4cd7903c46edf3a7661" + integrity sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-property-literals@^7.25.9", "@babel/plugin-transform-property-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" - integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== +"@babel/plugin-transform-property-literals@^7.25.9", "@babel/plugin-transform-property-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz#d45817cd72f9e134ab1f7fbb79264cfcb85cf636" + integrity sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-display-name@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de" - integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== +"@babel/plugin-transform-react-display-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.29.7.tgz#bf161a6d750267b79db7ff6f8fb89c3369b02df3" + integrity sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-jsx-development@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz#47ff95940e20a3a70e68ad3d4fcb657b647f6c98" - integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q== +"@babel/plugin-transform-react-jsx-development@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz#64e6aacb5cb43b9e80d3d5f19ddefc158a624f09" + integrity sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g== dependencies: - "@babel/plugin-transform-react-jsx" "^7.27.1" + "@babel/plugin-transform-react-jsx" "^7.29.7" "@babel/plugin-transform-react-jsx-self@^7.24.7": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz#af678d8506acf52c577cac73ff7fe6615c85fc92" - integrity sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz#c24424527858220624fd59a5b1eab4fa413c803a" + integrity sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-react-jsx-source@^7.24.7": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz#dcfe2c24094bb757bf73960374e7c55e434f19f0" - integrity sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz#5cf25a3689906b58e2f0a2f2b374789e6627b15f" + integrity sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-jsx@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz#1023bc94b78b0a2d68c82b5e96aed573bcfb9db0" - integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw== +"@babel/plugin-transform-react-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz#3d16a0e5773f079400a8c82a190709cdf92ee204" + integrity sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/plugin-transform-react-pure-annotations@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz#339f1ce355eae242e0649f232b1c68907c02e879" - integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA== +"@babel/plugin-transform-react-pure-annotations@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.29.7.tgz#76445c90112dd0a7371b63264563bfa9a4fcd6e3" + integrity sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-regenerator@^7.25.9", "@babel/plugin-transform-regenerator@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51" - integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA== +"@babel/plugin-transform-regenerator@^7.25.9", "@babel/plugin-transform-regenerator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz#0f42626a7dbb0e7a7f52e036d3e43deebdc3ea4e" + integrity sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-regexp-modifiers@^7.26.0", "@babel/plugin-transform-regexp-modifiers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" - integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== +"@babel/plugin-transform-regexp-modifiers@^7.26.0", "@babel/plugin-transform-regexp-modifiers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz#68311c0c10af2198212528863f8542843e424025" + integrity sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-reserved-words@^7.25.9", "@babel/plugin-transform-reserved-words@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" - integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== +"@babel/plugin-transform-reserved-words@^7.25.9", "@babel/plugin-transform-reserved-words@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz#a6feeb179b36a5f1fc6e3154c1eb727bdbe35876" + integrity sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-runtime@7.26.10": version "7.26.10" @@ -2291,95 +2243,95 @@ babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-runtime@^7.12.15", "@babel/plugin-transform-runtime@^7.13.9": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz#ae3e21fbefe2831ebac04dfa6b463691696afe17" - integrity sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w== +"@babel/plugin-transform-runtime@^7.13.9": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz#7c7fb6e2a46dce67e278b6cc84421c1d16da5695" + integrity sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" babel-plugin-polyfill-corejs2 "^0.4.14" babel-plugin-polyfill-corejs3 "^0.13.0" babel-plugin-polyfill-regenerator "^0.6.5" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.25.9", "@babel/plugin-transform-shorthand-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" - integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== +"@babel/plugin-transform-shorthand-properties@^7.25.9", "@babel/plugin-transform-shorthand-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz#25c0436b98f4bd9ca4b98e1fbd662743bbaab9bf" + integrity sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-spread@^7.25.9", "@babel/plugin-transform-spread@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" - integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== +"@babel/plugin-transform-spread@^7.25.9", "@babel/plugin-transform-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz#a128bcdd6b5e5e47054907b2e50bc19c3f856edd" + integrity sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-sticky-regex@^7.25.9", "@babel/plugin-transform-sticky-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" - integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== +"@babel/plugin-transform-sticky-regex@^7.25.9", "@babel/plugin-transform-sticky-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz#a42c0fd1fa42f7e98e1e0c7757f72a1bbca3a015" + integrity sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-template-literals@^7.26.8", "@babel/plugin-transform-template-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" - integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== +"@babel/plugin-transform-template-literals@^7.26.8", "@babel/plugin-transform-template-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz#ada97d8e0832bca8edb315888aa654b1570f3835" + integrity sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-typeof-symbol@^7.26.7", "@babel/plugin-transform-typeof-symbol@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" - integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== +"@babel/plugin-transform-typeof-symbol@^7.26.7", "@babel/plugin-transform-typeof-symbol@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz#d848a4677c1ee3485ab017f4018f04597798911c" + integrity sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-typescript@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz#441c5f9a4a1315039516c6c612fc66d5f4594e72" - integrity sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA== +"@babel/plugin-transform-typescript@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz#f0449c3df7037bbe232043476851c38f5e4a7615" + integrity sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-create-class-features-plugin" "^7.28.5" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-syntax-typescript" "^7.29.7" -"@babel/plugin-transform-unicode-escapes@^7.25.9", "@babel/plugin-transform-unicode-escapes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" - integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== +"@babel/plugin-transform-unicode-escapes@^7.25.9", "@babel/plugin-transform-unicode-escapes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz#1e99554b0cddfd650d649a9f2b996049893e5720" + integrity sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-property-regex@^7.25.9", "@babel/plugin-transform-unicode-property-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" - integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== +"@babel/plugin-transform-unicode-property-regex@^7.25.9", "@babel/plugin-transform-unicode-property-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz#44444afc73768c2190fac4d95f7716817b7f204a" + integrity sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-regex@^7.25.9", "@babel/plugin-transform-unicode-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" - integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== +"@babel/plugin-transform-unicode-regex@^7.25.9", "@babel/plugin-transform-unicode-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz#c3064b293ff7f1794b71f7650eec8db9896d3e59" + integrity sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-sets-regex@^7.25.9", "@babel/plugin-transform-unicode-sets-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" - integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== +"@babel/plugin-transform-unicode-sets-regex@^7.25.9", "@babel/plugin-transform-unicode-sets-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz#b03ac9f27326f6197e8e574add83bbf33fc34ecd" + integrity sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/preset-env@7.26.9": version "7.26.9" @@ -2456,80 +2408,81 @@ core-js-compat "^3.40.0" semver "^6.3.1" -"@babel/preset-env@^7.12.16", "@babel/preset-env@^7.13.9", "@babel/preset-env@^7.24", "@babel/preset-env@^7.24.5", "@babel/preset-env@^7.3.1": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.5.tgz#82dd159d1563f219a1ce94324b3071eb89e280b0" - integrity sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg== - dependencies: - "@babel/compat-data" "^7.28.5" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.3" +"@babel/preset-env@^7", "@babel/preset-env@^7.13.9", "@babel/preset-env@^7.24", "@babel/preset-env@^7.24.5", "@babel/preset-env@^7.3.1": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.7.tgz#5e2ab5e764b493fdefc99c43aeaa70a9533a37fd" + integrity sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA== + dependencies: + "@babel/compat-data" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.29.7" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.29.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.29.7" + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array" "^7.29.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.29.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.29.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.27.1" - "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-import-assertions" "^7.29.7" + "@babel/plugin-syntax-import-attributes" "^7.29.7" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.0" - "@babel/plugin-transform-async-to-generator" "^7.27.1" - "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.5" - "@babel/plugin-transform-class-properties" "^7.27.1" - "@babel/plugin-transform-class-static-block" "^7.28.3" - "@babel/plugin-transform-classes" "^7.28.4" - "@babel/plugin-transform-computed-properties" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.5" - "@babel/plugin-transform-dotall-regex" "^7.27.1" - "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" - "@babel/plugin-transform-dynamic-import" "^7.27.1" - "@babel/plugin-transform-explicit-resource-management" "^7.28.0" - "@babel/plugin-transform-exponentiation-operator" "^7.28.5" - "@babel/plugin-transform-export-namespace-from" "^7.27.1" - "@babel/plugin-transform-for-of" "^7.27.1" - "@babel/plugin-transform-function-name" "^7.27.1" - "@babel/plugin-transform-json-strings" "^7.27.1" - "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.28.5" - "@babel/plugin-transform-member-expression-literals" "^7.27.1" - "@babel/plugin-transform-modules-amd" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-modules-systemjs" "^7.28.5" - "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" - "@babel/plugin-transform-new-target" "^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" - "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.28.4" - "@babel/plugin-transform-object-super" "^7.27.1" - "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.28.5" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/plugin-transform-private-methods" "^7.27.1" - "@babel/plugin-transform-private-property-in-object" "^7.27.1" - "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.4" - "@babel/plugin-transform-regexp-modifiers" "^7.27.1" - "@babel/plugin-transform-reserved-words" "^7.27.1" - "@babel/plugin-transform-shorthand-properties" "^7.27.1" - "@babel/plugin-transform-spread" "^7.27.1" - "@babel/plugin-transform-sticky-regex" "^7.27.1" - "@babel/plugin-transform-template-literals" "^7.27.1" - "@babel/plugin-transform-typeof-symbol" "^7.27.1" - "@babel/plugin-transform-unicode-escapes" "^7.27.1" - "@babel/plugin-transform-unicode-property-regex" "^7.27.1" - "@babel/plugin-transform-unicode-regex" "^7.27.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/plugin-transform-arrow-functions" "^7.29.7" + "@babel/plugin-transform-async-generator-functions" "^7.29.7" + "@babel/plugin-transform-async-to-generator" "^7.29.7" + "@babel/plugin-transform-block-scoped-functions" "^7.29.7" + "@babel/plugin-transform-block-scoping" "^7.29.7" + "@babel/plugin-transform-class-properties" "^7.29.7" + "@babel/plugin-transform-class-static-block" "^7.29.7" + "@babel/plugin-transform-classes" "^7.29.7" + "@babel/plugin-transform-computed-properties" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-dotall-regex" "^7.29.7" + "@babel/plugin-transform-duplicate-keys" "^7.29.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-dynamic-import" "^7.29.7" + "@babel/plugin-transform-explicit-resource-management" "^7.29.7" + "@babel/plugin-transform-exponentiation-operator" "^7.29.7" + "@babel/plugin-transform-export-namespace-from" "^7.29.7" + "@babel/plugin-transform-for-of" "^7.29.7" + "@babel/plugin-transform-function-name" "^7.29.7" + "@babel/plugin-transform-json-strings" "^7.29.7" + "@babel/plugin-transform-literals" "^7.29.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.29.7" + "@babel/plugin-transform-member-expression-literals" "^7.29.7" + "@babel/plugin-transform-modules-amd" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-modules-systemjs" "^7.29.7" + "@babel/plugin-transform-modules-umd" "^7.29.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-new-target" "^7.29.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.29.7" + "@babel/plugin-transform-numeric-separator" "^7.29.7" + "@babel/plugin-transform-object-rest-spread" "^7.29.7" + "@babel/plugin-transform-object-super" "^7.29.7" + "@babel/plugin-transform-optional-catch-binding" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/plugin-transform-private-methods" "^7.29.7" + "@babel/plugin-transform-private-property-in-object" "^7.29.7" + "@babel/plugin-transform-property-literals" "^7.29.7" + "@babel/plugin-transform-regenerator" "^7.29.7" + "@babel/plugin-transform-regexp-modifiers" "^7.29.7" + "@babel/plugin-transform-reserved-words" "^7.29.7" + "@babel/plugin-transform-shorthand-properties" "^7.29.7" + "@babel/plugin-transform-spread" "^7.29.7" + "@babel/plugin-transform-sticky-regex" "^7.29.7" + "@babel/plugin-transform-template-literals" "^7.29.7" + "@babel/plugin-transform-typeof-symbol" "^7.29.7" + "@babel/plugin-transform-unicode-escapes" "^7.29.7" + "@babel/plugin-transform-unicode-property-regex" "^7.29.7" + "@babel/plugin-transform-unicode-regex" "^7.29.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.29.7" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.14" - babel-plugin-polyfill-corejs3 "^0.13.0" - babel-plugin-polyfill-regenerator "^0.6.5" - core-js-compat "^3.43.0" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -2542,34 +2495,34 @@ esutils "^2.0.2" "@babel/preset-react@^7.12.13": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.28.5.tgz#6fcc0400fa79698433d653092c3919bb4b0878d9" - integrity sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.29.7.tgz#2ed18366e38c2081bbf1760dc01e88fa5674eb17" + integrity sha512-C+PV1TFUPTmBQGoPBL8j2QmLpZ117YTCwxIZeJOM96GbYMFSc7/pOXU5lVykwnZxyTqQxRsvoRk6f2FktZgGHA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-transform-react-display-name" "^7.28.0" - "@babel/plugin-transform-react-jsx" "^7.27.1" - "@babel/plugin-transform-react-jsx-development" "^7.27.1" - "@babel/plugin-transform-react-pure-annotations" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-transform-react-display-name" "^7.29.7" + "@babel/plugin-transform-react-jsx" "^7.29.7" + "@babel/plugin-transform-react-jsx-development" "^7.29.7" + "@babel/plugin-transform-react-pure-annotations" "^7.29.7" "@babel/preset-typescript@^7.12.1", "@babel/preset-typescript@^7.13.0": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz#540359efa3028236958466342967522fd8f2a60c" - integrity sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz#de9be1f47b785c979ec7b3a71f4cd8bae5267b62" + integrity sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-typescript" "^7.28.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-typescript" "^7.29.7" "@babel/runtime-corejs3@^7.10.2": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz#c25be39c7997ce2f130d70b9baecb8ed94df93fa" - integrity sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.29.7.tgz#2030fda34f3433647818660093751fb1ca2debf0" + integrity sha512-ppj9ouYku+RX0ljtgZd+KMO5mkM2bCqg8H2PYAFWnLsHEIKIdRojqbJ2i3eVHrisuxy7nOFCmngTDdWtUCdXUQ== dependencies: - core-js-pure "^3.43.0" + core-js-pure "^3.48.0" "@babel/runtime@7.26.10": version "7.26.10" @@ -2579,52 +2532,44 @@ regenerator-runtime "^0.14.0" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.9", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.24.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" - integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.7.tgz#12022450c45a4da6d8d8287b18a4ff2ddb23f768" + integrity sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw== "@babel/standalone@^7.24": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.28.5.tgz#4fced2b23f9670a04b30cc4942c3e4b87bce4eff" - integrity sha512-1DViPYJpRU50irpGMfLBQ9B4kyfQuL6X7SS7pwTeWeZX0mNkjzPi0XFqxCjSdddZXUQy4AhnQnnesA/ZHnvAdw== - -"@babel/template@^7.0.0", "@babel/template@^7.25.0", "@babel/template@^7.26.9", "@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.24", "@babel/traverse@^7.25.2", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5", "@babel/traverse@^7.7.0": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b" - integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.5" + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.29.7.tgz#3944717636f63cabc134962e1b00b46fe594db0e" + integrity sha512-oFh9XoGL20UuHIeIuBQHOvF7r2dOCRnZW0r4SageGb9SWnt6HhbuPLREykNaEnP7/SRpMUwr50SSMJLrmeHvnQ== + +"@babel/template@^7.25.0", "@babel/template@^7.26.9", "@babel/template@^7.29.7", "@babel/template@^7.3.3": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.29.7.tgz#4d9d4004f645cdd304de958c725162784ecac700" + integrity sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.24", "@babel/traverse@^7.25.2", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.8", "@babel/traverse@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.7.tgz#c47b07a41b95da0907d026b5dd894d98de7d2f2d" + integrity sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24", "@babel/types@^7.24.7", "@babel/types@^7.25.2", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24", "@babel/types@^7.24.7", "@babel/types@^7.25.2", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.29.0", "@babel/types@^7.29.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.7.tgz#8005e31d82712ee7adaef6e23c63b71a62770a92" + integrity sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA== dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - -"@babel/types@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" - integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-string-parser" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" "@balena/dockerignore@^1.0.2": version "1.0.2" @@ -2888,11 +2833,6 @@ enabled "2.0.x" kuler "^2.0.0" -"@discoveryjs/json-ext@0.5.7": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - "@discoveryjs/json-ext@0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz#593da7a17a31a72a874e313677183334a49b01c9" @@ -4877,13 +4817,6 @@ resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2" integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA== -"@node-ipc/js-queue@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz#ac7fe33d766fa53e233ef8fedaf3443a01c5a4cd" - integrity sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw== - dependencies: - easy-stack "1.0.1" - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -5808,11 +5741,6 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@polka/url@^1.0.0-next.20": - version "1.0.0-next.23" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" - integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg== - "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -7988,21 +7916,6 @@ dependencies: tslib "^2.6.2" -"@soda/friendly-errors-webpack-plugin@^1.8.0": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz#4d4fbb1108993aaa362116247c3d18188a2c6c85" - integrity sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg== - dependencies: - chalk "^3.0.0" - error-stack-parser "^2.0.6" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -"@soda/get-current-script@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz#a53515db25d8038374381b73af20bb4f2e508d87" - integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== - "@standard-schema/spec@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" @@ -8146,7 +8059,7 @@ "@types/connect" "*" "@types/node" "*" -"@types/bonjour@^3.5.13", "@types/bonjour@^3.5.9": +"@types/bonjour@^3.5.13": version "3.5.13" resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== @@ -8178,7 +8091,7 @@ dependencies: "@types/node" "*" -"@types/connect-history-api-fallback@^1.3.5", "@types/connect-history-api-fallback@^1.5.4": +"@types/connect-history-api-fallback@^1.5.4": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== @@ -8320,23 +8233,7 @@ "@types/node" "*" "@types/ssh2" "*" -"@types/eslint-scope@^3.7.7": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - version "8.44.7" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.7.tgz#430b3cc96db70c81f405e6a08aebdb13869198f5" - integrity sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@1.0.7", "@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@^1.0.6": +"@types/estree@*", "@types/estree@1.0.7", "@types/estree@^1.0.0", "@types/estree@^1.0.5": version "1.0.7" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== @@ -8390,7 +8287,7 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/express@^4.17.13", "@types/express@^4.17.21": +"@types/express@^4.17.21": version "4.17.21" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -8440,11 +8337,6 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - "@types/http-errors@*": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" @@ -8516,7 +8408,7 @@ resolved "https://registry.yarnpkg.com/@types/json-bigint/-/json-bigint-1.0.1.tgz#201062a6990119a8cc18023cfe1fed12fc2fc8a7" integrity sha512-zpchZLNsNuzJHi6v64UBoFWAvQlPhch7XAi36FkH6tL1bbbmimIF+cS7vwkzY4u5RaSWMoflQfu+TshMPPw8uw== -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -8763,11 +8655,6 @@ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - "@types/retry@0.12.2": version "0.12.2" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" @@ -8791,14 +8678,14 @@ "@types/mime" "^1" "@types/node" "*" -"@types/serve-index@^1.9.1", "@types/serve-index@^1.9.4": +"@types/serve-index@^1.9.4": version "1.9.4" resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== dependencies: "@types/express" "*" -"@types/serve-static@*", "@types/serve-static@^1.13.10", "@types/serve-static@^1.15.5": +"@types/serve-static@*", "@types/serve-static@^1.15.5": version "1.15.7" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== @@ -8825,7 +8712,7 @@ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== -"@types/sockjs@^0.3.33", "@types/sockjs@^0.3.36": +"@types/sockjs@^0.3.36": version "0.3.36" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== @@ -8857,16 +8744,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== -"@types/strip-bom@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" - integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= - -"@types/strip-json-comments@0.0.30": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" - integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== - "@types/styled-components@^5.1.34": version "5.1.34" resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.34.tgz#4107df8ef8a7eaba4fa6b05f78f93fba4daf0300" @@ -8949,13 +8826,6 @@ dependencies: "@types/node" "*" -"@types/ws@^8.5.5": - version "8.5.14" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.14.tgz#93d44b268c9127d96026cf44353725dd9b6c3c21" - integrity sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw== - dependencies: - "@types/node" "*" - "@types/yargs-parser@*": version "20.2.1" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" @@ -9174,247 +9044,6 @@ convert-source-map "^2.0.0" tinyrainbow "^3.1.0" -"@vue/babel-helper-vue-jsx-merge-props@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz#8d53a1e21347db8edbe54d339902583176de09f2" - integrity sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA== - -"@vue/babel-helper-vue-transform-on@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" - integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== - -"@vue/babel-plugin-jsx@^1.0.3": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz#0c5bac27880d23f89894cd036a37b55ef61ddfc1" - integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - "@vue/babel-helper-vue-transform-on" "^1.0.2" - camelcase "^6.0.0" - html-tags "^3.1.0" - svg-tags "^1.0.0" - -"@vue/babel-plugin-transform-vue-jsx@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz#4d4b3d46a39ea62b7467dd6e26ce47f7ceafb2fe" - integrity sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - html-tags "^2.0.0" - lodash.kebabcase "^4.1.1" - svg-tags "^1.0.0" - -"@vue/babel-preset-app@^5", "@vue/babel-preset-app@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz#ce38f76314f5265d62a89756ef264c21f1d351a1" - integrity sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg== - dependencies: - "@babel/core" "^7.12.16" - "@babel/helper-compilation-targets" "^7.12.16" - "@babel/helper-module-imports" "^7.12.13" - "@babel/plugin-proposal-class-properties" "^7.12.13" - "@babel/plugin-proposal-decorators" "^7.12.13" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/plugin-transform-runtime" "^7.12.15" - "@babel/preset-env" "^7.12.16" - "@babel/runtime" "^7.12.13" - "@vue/babel-plugin-jsx" "^1.0.3" - "@vue/babel-preset-jsx" "^1.1.2" - babel-plugin-dynamic-import-node "^2.3.3" - core-js "^3.8.3" - core-js-compat "^3.8.3" - semver "^7.3.4" - -"@vue/babel-preset-jsx@^1.1.2": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz#f4914ba314235ab097bc4372ed67473c0780bfcc" - integrity sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA== - dependencies: - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - "@vue/babel-sugar-composition-api-inject-h" "^1.4.0" - "@vue/babel-sugar-composition-api-render-instance" "^1.4.0" - "@vue/babel-sugar-functional-vue" "^1.4.0" - "@vue/babel-sugar-inject-h" "^1.4.0" - "@vue/babel-sugar-v-model" "^1.4.0" - "@vue/babel-sugar-v-on" "^1.4.0" - -"@vue/babel-sugar-composition-api-inject-h@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz#187e1389f8871d89ece743bb50aed713be9d6c85" - integrity sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-composition-api-render-instance@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz#2c1607ae6dffdab47e785bc01fa45ba756e992c1" - integrity sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-functional-vue@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz#60da31068567082287c7337c66ef4df04e0a1029" - integrity sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-inject-h@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz#bf39aa6631fb1d0399b1c49b4c59e1c8899b4363" - integrity sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-v-model@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz#a51d986609f430c4f70ada3a93cc560a2970f720" - integrity sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - camelcase "^5.0.0" - html-tags "^2.0.0" - svg-tags "^1.0.0" - -"@vue/babel-sugar-v-on@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz#43b7106a9672d8cbeefc0eb8afe1d376edc6166e" - integrity sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - camelcase "^5.0.0" - -"@vue/cli-overlay@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-5.0.8.tgz#b61477acdc43bbd42fce6326d228471201ecdcdd" - integrity sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ== - -"@vue/cli-plugin-babel@^5.0": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.8.tgz#54f9a07900f29baff54803dcfa916c602894feb7" - integrity sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ== - dependencies: - "@babel/core" "^7.12.16" - "@vue/babel-preset-app" "^5.0.8" - "@vue/cli-shared-utils" "^5.0.8" - babel-loader "^8.2.2" - thread-loader "^3.0.0" - webpack "^5.54.0" - -"@vue/cli-plugin-eslint@^5.0": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.8.tgz#754939265c2c5b746fa36c7d7705a89138e193bf" - integrity sha512-d11+I5ONYaAPW1KyZj9GlrV/E6HZePq5L5eAF5GgoVdu6sxr6bDgEoxzhcS1Pk2eh8rn1MxG/FyyR+eCBj/CNg== - dependencies: - "@vue/cli-shared-utils" "^5.0.8" - eslint-webpack-plugin "^3.1.0" - globby "^11.0.2" - webpack "^5.54.0" - yorkie "^2.0.0" - -"@vue/cli-plugin-router@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.8.tgz#a113ec626f3d4216d20496c42d35533bce9e889f" - integrity sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg== - dependencies: - "@vue/cli-shared-utils" "^5.0.8" - -"@vue/cli-plugin-vuex@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz#0d4cb3020f9102bea9288d750729dde176c66ccd" - integrity sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA== - -"@vue/cli-service@^5.0": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-5.0.8.tgz#cf3f6f1b7bf0fba9cdab86b6bec4f9897f982dac" - integrity sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw== - dependencies: - "@babel/helper-compilation-targets" "^7.12.16" - "@soda/friendly-errors-webpack-plugin" "^1.8.0" - "@soda/get-current-script" "^1.0.2" - "@types/minimist" "^1.2.0" - "@vue/cli-overlay" "^5.0.8" - "@vue/cli-plugin-router" "^5.0.8" - "@vue/cli-plugin-vuex" "^5.0.8" - "@vue/cli-shared-utils" "^5.0.8" - "@vue/component-compiler-utils" "^3.3.0" - "@vue/vue-loader-v15" "npm:vue-loader@^15.9.7" - "@vue/web-component-wrapper" "^1.3.0" - acorn "^8.0.5" - acorn-walk "^8.0.2" - address "^1.1.2" - autoprefixer "^10.2.4" - browserslist "^4.16.3" - case-sensitive-paths-webpack-plugin "^2.3.0" - cli-highlight "^2.1.10" - clipboardy "^2.3.0" - cliui "^7.0.4" - copy-webpack-plugin "^9.0.1" - css-loader "^6.5.0" - css-minimizer-webpack-plugin "^3.0.2" - cssnano "^5.0.0" - debug "^4.1.1" - default-gateway "^6.0.3" - dotenv "^10.0.0" - dotenv-expand "^5.1.0" - fs-extra "^9.1.0" - globby "^11.0.2" - hash-sum "^2.0.0" - html-webpack-plugin "^5.1.0" - is-file-esm "^1.0.0" - launch-editor-middleware "^2.2.1" - lodash.defaultsdeep "^4.6.1" - lodash.mapvalues "^4.6.0" - mini-css-extract-plugin "^2.5.3" - minimist "^1.2.5" - module-alias "^2.2.2" - portfinder "^1.0.26" - postcss "^8.2.6" - postcss-loader "^6.1.1" - progress-webpack-plugin "^1.0.12" - ssri "^8.0.1" - terser-webpack-plugin "^5.1.1" - thread-loader "^3.0.0" - vue-loader "^17.0.0" - vue-style-loader "^4.1.3" - webpack "^5.54.0" - webpack-bundle-analyzer "^4.4.0" - webpack-chain "^6.5.1" - webpack-dev-server "^4.7.3" - webpack-merge "^5.7.3" - webpack-virtual-modules "^0.4.2" - whatwg-fetch "^3.6.2" - -"@vue/cli-shared-utils@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz#75fc96528eba2b1c7e33cb7e989a984ddef99c8a" - integrity sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ== - dependencies: - "@achrinza/node-ipc" "^9.2.5" - chalk "^4.1.2" - execa "^1.0.0" - joi "^17.4.0" - launch-editor "^2.2.1" - lru-cache "^6.0.0" - node-fetch "^2.6.7" - open "^8.0.2" - ora "^5.3.0" - read-pkg "^5.1.1" - semver "^7.3.4" - strip-ansi "^6.0.0" - "@vue/compiler-core@3.3.8": version "3.3.8" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313" @@ -9457,22 +9086,6 @@ "@vue/compiler-dom" "3.3.8" "@vue/shared" "3.3.8" -"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" - integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.36" - postcss-selector-parser "^6.0.2" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - optionalDependencies: - prettier "^1.18.2 || ^2.0.0" - "@vue/reactivity-transform@3.3.8": version "3.3.8" resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2" @@ -9529,35 +9142,7 @@ js-beautify "^1.14.9" vue-component-type-helpers "^1.8.21" -"@vue/vue-loader-v15@npm:vue-loader@^15.9.7": - version "15.11.1" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.11.1.tgz#dee91169211276ed43c5715caef88a56b1f497b0" - integrity sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q== - dependencies: - "@vue/component-compiler-utils" "^3.1.0" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -"@vue/vue3-jest@^29": - version "29.2.6" - resolved "https://registry.yarnpkg.com/@vue/vue3-jest/-/vue3-jest-29.2.6.tgz#2b32c61d99efa4e72a7d1365972dcf43b595b3f0" - integrity sha512-Hy4i2BsV5fUmER5LplYiAeRkLTDCSB3ZbnAeEawXtjto/ILaOnamBAoAvEqARgPpR6NRtiYjSgGKmllMtnFd9g== - dependencies: - "@babel/plugin-transform-modules-commonjs" "^7.2.0" - chalk "^2.1.0" - convert-source-map "^1.6.0" - css-tree "^2.0.1" - source-map "0.5.6" - tsconfig "^7.0.0" - -"@vue/web-component-wrapper@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" - integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== - -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@^1.14.1": +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.12.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== @@ -9623,7 +9208,7 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== -"@webassemblyjs/wasm-edit@^1.12.1", "@webassemblyjs/wasm-edit@^1.14.1": +"@webassemblyjs/wasm-edit@^1.12.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== @@ -9658,7 +9243,7 @@ "@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.1" -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@^1.14.1": +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.12.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== @@ -9809,7 +9394,7 @@ acorn-import-attributes@^1.9.5: resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== -acorn-jsx@^5.2.0, acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -9828,26 +9413,26 @@ acorn-walk@^7.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.0.0, acorn-walk@^8.0.2: +acorn-walk@^8.0.2: version "8.3.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== -acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.0.0, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.0.5, acorn@^8.14.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.14.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" - integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== - acorn@^8.1.0, acorn@^8.8.1: version "8.16.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== +acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + add-dom-event-listener@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" @@ -9860,11 +9445,6 @@ add-stream@^1.0.0: resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== -address@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - adjust-sourcemap-loader@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" @@ -9966,7 +9546,7 @@ ansi-colors@4.1.3, ansi-colors@^4.1.1, ansi-colors@^4.1.3: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^3.0.0, ansi-escapes@^3.1.0: +ansi-escapes@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -9995,11 +9575,6 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - ansi-regex@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" @@ -10106,7 +9681,7 @@ any-base@^1.1.0: resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== -any-promise@^1.0.0, any-promise@^1.1.0: +any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -10131,7 +9706,7 @@ aproba@2.0.0, "aproba@^1.0.3 || ^2.0.0": resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -arch@^2.1.1, arch@^2.2.0: +arch@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== @@ -10397,13 +9972,6 @@ async-validator@~1.11.3: resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.11.5.tgz#9d43cf49ef6bb76be5442388d19fb9a6e47597ea" integrity sha512-XNtCsMAeAH1pdLMEg1z8/Bb3a8cdCbui9QbJATRFHHHW5kT6+NPI3zSVQUXgikTFITzsg+kYY5NTWhM2Orwt9w== -async@^2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - async@^3.2.0, async@^3.2.3, async@^3.2.4, async@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" @@ -10419,7 +9987,7 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -autoprefixer@10.4.20, autoprefixer@^10.2.4: +autoprefixer@10.4.20: version "10.4.20" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== @@ -10502,22 +10070,17 @@ b4a@^1.6.4: resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba" integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== -babel-core@7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== +babel-eslint@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" + integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" babel-jest@^29, babel-jest@^29.7.0: version "29.7.0" @@ -10540,23 +10103,6 @@ babel-loader@9.1.3: find-cache-dir "^4.0.0" schema-utils "^4.0.0" -babel-loader@^8.2.2: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -10596,6 +10142,15 @@ babel-plugin-polyfill-corejs2@^0.4.14: "@babel/helper-define-polyfill-provider" "^0.6.5" semver "^6.3.1" +babel-plugin-polyfill-corejs2@^0.4.15: + version "0.4.17" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91" + integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.8" + semver "^6.3.1" + babel-plugin-polyfill-corejs3@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" @@ -10612,6 +10167,14 @@ babel-plugin-polyfill-corejs3@^0.13.0: "@babel/helper-define-polyfill-provider" "^0.6.5" core-js-compat "^3.43.0" +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587" + integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.8" + core-js-compat "^3.48.0" + babel-plugin-polyfill-regenerator@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz#4f08ef4c62c7a7f66a35ed4c0d75e30506acc6be" @@ -10626,6 +10189,13 @@ babel-plugin-polyfill-regenerator@^0.6.5: dependencies: "@babel/helper-define-polyfill-provider" "^0.6.5" +babel-plugin-polyfill-regenerator@^0.6.6: + version "0.6.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721" + integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.8" + babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -10718,6 +10288,11 @@ base64id@2.0.0: resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== +baseline-browser-mapping@^2.10.12: + version "2.10.36" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.36.tgz#ff3c7c87095c70075b1ac787160fd4fc98750a74" + integrity sha512-lVq/Df7LXlO79MVaaUHztSwWiG9oXoWHlgvNS51v8Dpd4+G4/VIy6qYePTw31nAVls33nUtnfezYeLkYAak9dg== + baseline-browser-mapping@^2.8.25: version "2.8.31" resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz#16c0f1814638257932e0486dbfdbb3348d0a5710" @@ -10853,7 +10428,7 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@^3.1.1, bluebird@^3.7.2: +bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -10886,7 +10461,7 @@ body-parser@1.20.3, body-parser@^1.19.0: type-is "~1.6.18" unpipe "1.0.0" -bonjour-service@^1.0.11, bonjour-service@^1.2.1: +bonjour-service@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== @@ -10941,7 +10516,7 @@ browser-request@^0.3.3: resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" integrity sha1-ns5bWsqJopkyJC4Yv5M975h2zBc= -browserslist@^4.0.0, browserslist@^4.16.3, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.22.1, browserslist@^4.23.0, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.4: +browserslist@^4.21.10, browserslist@^4.21.5, browserslist@^4.22.1, browserslist@^4.23.0, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.4: version "4.24.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== @@ -10962,6 +10537,17 @@ browserslist@^4.28.0: node-releases "^2.0.27" update-browserslist-db "^1.1.4" +browserslist@^4.28.1: + version "4.28.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" + integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== + dependencies: + baseline-browser-mapping "^2.10.12" + caniuse-lite "^1.0.30001782" + electron-to-chromium "^1.5.328" + node-releases "^2.0.36" + update-browserslist-db "^1.2.3" + bs-logger@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -11245,7 +10831,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0: +camelcase@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== @@ -11255,21 +10841,16 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001754: +caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001754: version "1.0.30001757" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz#a46ff91449c69522a462996c6aac4ef95d7ccc5e" integrity sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ== +caniuse-lite@^1.0.30001782: + version "1.0.30001799" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz#5c909138c27f1a61219d3e092071c1cc7d32dc55" + integrity sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw== + cardinal@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" @@ -11283,11 +10864,6 @@ cargo-cp-artifact@^0.1.9: resolved "https://registry.yarnpkg.com/cargo-cp-artifact/-/cargo-cp-artifact-0.1.9.tgz#32264a0a48109e26c48da334daff9a1da9d9b7c8" integrity sha512-6F+UYzTaGB+awsTXg0uSJA1/b/B3DDJzpKVRu0UmyI7DmNeaAl2RFHuTGIN6fEgpadRxoXGb7gbC1xo4C3IdyA== -case-sensitive-paths-webpack-plugin@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -11317,7 +10893,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -11411,11 +10987,6 @@ chrono-node@2.6.2: dependencies: dayjs "^1.10.0" -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -11441,13 +11012,6 @@ classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classna resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== -clean-css@^5.2.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" - integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== - dependencies: - source-map "~0.6.0" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -11467,13 +11031,6 @@ cli-cursor@3.1.0, cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-cursor@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - cli-cursor@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" @@ -11481,18 +11038,6 @@ cli-cursor@^5.0.0: dependencies: restore-cursor "^5.0.0" -cli-highlight@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" - integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== - dependencies: - chalk "^4.0.0" - highlight.js "^10.7.1" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^16.0.0" - cli-progress@^3.10, cli-progress@^3.4.0, cli-progress@^3.9.0: version "3.10.0" resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.10.0.tgz#63fd9d6343c598c93542fdfa3563a8b59887d78a" @@ -11577,16 +11122,7 @@ clipboard-copy@^4.0.1: resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-4.0.1.tgz#326ef9726d4ffe72d9a82a7bbe19379de692017d" integrity sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng== -clipboardy@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" - integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== - dependencies: - arch "^2.1.1" - execa "^1.0.0" - is-wsl "^2.1.1" - -cliui@^7.0.2, cliui@^7.0.4: +cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== @@ -11720,11 +11256,6 @@ color@^3.1.3: color-convert "^1.9.3" color-string "^1.6.0" -colord@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" - integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== - colorette@^2.0.10, colorette@^2.0.16, colorette@^2.0.20: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" @@ -11778,16 +11309,6 @@ commander@^6.2.1: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -11932,13 +11453,6 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -12024,7 +11538,7 @@ conventional-recommended-bump@7.0.1: git-semver-tags "^5.0.0" meow "^8.1.2" -convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -12082,19 +11596,7 @@ copy-webpack-plugin@12.0.2: schema-utils "^4.2.0" serialize-javascript "^6.0.2" -copy-webpack-plugin@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b" - integrity sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA== - dependencies: - fast-glob "^3.2.7" - glob-parent "^6.0.1" - globby "^11.0.3" - normalize-path "^3.0.0" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - -core-js-compat@^3.40.0, core-js-compat@^3.8.3: +core-js-compat@^3.40.0: version "3.41.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== @@ -12108,10 +11610,17 @@ core-js-compat@^3.43.0: dependencies: browserslist "^4.28.0" -core-js-pure@^3.43.0: - version "3.47.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.47.0.tgz#1104df8a3b6eb9189fcc559b5a65b90f66e7e887" - integrity sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw== +core-js-compat@^3.48.0: + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6" + integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA== + dependencies: + browserslist "^4.28.1" + +core-js-pure@^3.48.0: + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.49.0.tgz#ff8436b7251a3832f5fdbbe3e10f7f2e58e51fb1" + integrity sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw== core-js@^1.0.0: version "1.2.7" @@ -12123,7 +11632,7 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.34.0, core-js@^3.4.1, core-js@^3.6.5, core-js@^3.8.3: +core-js@^3.34.0, core-js@^3.4.1, core-js@^3.6.5: version "3.34.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.34.0.tgz#5705e6ad5982678612e96987d05b27c6c7c274a5" integrity sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag== @@ -12244,15 +11753,6 @@ cross-fetch@^3.0.2: dependencies: node-fetch "2.6.7" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" @@ -12298,11 +11798,6 @@ css-color-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= -css-declaration-sorter@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" - integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== - css-loader@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.2.tgz#64671541c6efe06b0e22e750503106bdd86880f8" @@ -12317,48 +11812,11 @@ css-loader@7.1.2: postcss-value-parser "^4.2.0" semver "^7.5.4" -css-loader@^6.5.0: - version "6.8.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" - integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.21" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.3" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.8" - css-mediaquery@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/css-mediaquery/-/css-mediaquery-0.1.2.tgz#6a2c37344928618631c54bd33cedd301da18bea0" integrity sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA= -css-minimizer-webpack-plugin@^3.0.2: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - css-select@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" @@ -12379,27 +11837,6 @@ css-to-react-native@3.2.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-tree@^2.0.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" - integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - dependencies: - mdn-data "2.0.30" - source-map-js "^1.0.1" - -css-what@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== - css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" @@ -12410,62 +11847,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.0.0, cssnano@^5.0.6: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - cssom@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" @@ -12783,11 +12164,6 @@ dayjs@1.x, dayjs@^1.10.0, dayjs@^1.10.4: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - debug@2.6.9, debug@^2.2.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -12809,7 +12185,7 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.4.1: +debug@^4.4.1, debug@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -12933,11 +12309,6 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" @@ -13194,13 +12565,6 @@ dom-align@^1.7.0: resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.2.tgz#0f8164ebd0c9c21b0c790310493cd855892acd4b" integrity sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg== -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - dom-helpers@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" @@ -13214,15 +12578,6 @@ dom-scroll-into-view@1.x, dom-scroll-into-view@^1.2.0: resolved "https://registry.yarnpkg.com/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz#e8f36732dd089b0201a88d7815dc3f88e6d66c7e" integrity sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4= -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - dom-serializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" @@ -13237,7 +12592,7 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: +domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -13249,13 +12604,6 @@ domexception@^4.0.0: dependencies: webidl-conversions "^7.0.0" -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" @@ -13263,15 +12611,6 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -domutils@^2.5.2, domutils@^2.6.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils@^3.0.1: version "3.2.2" resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78" @@ -13281,14 +12620,6 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.3" -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -13296,11 +12627,6 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - dotenv-expand@~11.0.6: version "11.0.7" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" @@ -13308,11 +12634,6 @@ dotenv-expand@~11.0.6: dependencies: dotenv "^16.4.5" -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - dotenv@^16.0.3: version "16.0.3" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" @@ -13350,11 +12671,6 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - duplexify@^4.0.0, duplexify@^4.1.1, duplexify@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" @@ -13370,11 +12686,6 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -easy-stack@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.1.tgz#8afe4264626988cabb11f3c704ccd0c835411066" - integrity sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w== - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -13425,6 +12736,11 @@ electron-to-chromium@^1.5.249: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz#c31eed591c6628908451c9ca0f0758ed514aa003" integrity sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ== +electron-to-chromium@^1.5.328: + version "1.5.371" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.371.tgz#fa5684f2a514c57368823f9e75553f9a7c5ef0be" + integrity sha512-e9htk9mAYL6AzmkEhSvVVw7IWGSBJ/Bqdn2eRyRLrj1g6sncN4WbFt5qnILYoCktktr45pyjIrOiRvBThQ808w== + electron-to-chromium@^1.5.73: version "1.5.79" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz#4424f23f319db7a653cf9ee76102e4ac283e6b3e" @@ -13629,13 +12945,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0: version "1.23.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.2.tgz#693312f3940f967b8dd3eebacb590b01712622e0" @@ -14030,14 +13339,13 @@ eslint-plugin-react@^7.15.1, eslint-plugin-react@^7.20.0: semver "^6.3.0" string.prototype.matchall "^4.0.6" -eslint-plugin-vue@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" - integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha512-ivpbtpUgg9SJS4TLjK7KdcDhqc/E3CGItsvQbBNLkNGUeMhd5qnJcryba/brESS+dg3vrLqPuc/UcS7jRJdN5A== dependencies: - natural-compare "^1.4.0" - semver "^5.6.0" - vue-eslint-parser "^7.0.0" + esrecurse "^4.1.0" + estraverse "^4.1.1" eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" @@ -14084,17 +13392,6 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-webpack-plugin@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" - integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== - dependencies: - "@types/eslint" "^7.29.0 || ^8.4.1" - jest-worker "^28.0.2" - micromatch "^4.0.5" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - eslint@^7.21.0: version "7.32.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" @@ -14185,15 +13482,6 @@ eslint@^8.54.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -14224,7 +13512,7 @@ esquery@^1.4.0, esquery@^1.4.2: dependencies: estraverse "^5.1.0" -esrecurse@^4.3.0: +esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -14268,11 +13556,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-pubsub@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" - integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== - event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -14346,19 +13629,6 @@ execa@^0.10.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -14562,7 +13832,7 @@ fast-glob@3.3.2: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.0.3, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.1, fast-glob@^3.3.2, fast-glob@^3.3.3: +fast-glob@^3.0.3, fast-glob@^3.2.9, fast-glob@^3.3.1, fast-glob@^3.3.2, fast-glob@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -14683,13 +13953,6 @@ figures@3.2.0, figures@^3.0.0, figures@^3.2.0: dependencies: escape-string-regexp "^1.0.5" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -14749,7 +14012,7 @@ finalhandler@1.3.1: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^3.3.1, find-cache-dir@^3.3.2: +find-cache-dir@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -15029,11 +14292,6 @@ fs-minipass@^3.0.0: dependencies: minipass "^7.0.3" -fs-monkey@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" - integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -15468,7 +14726,7 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: +globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -15605,13 +14863,6 @@ gtoken@^8.0.0: gaxios "^7.0.0" jws "^4.0.0" -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" @@ -15704,16 +14955,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - -hash-sum@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" - integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== - hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -15729,16 +14970,6 @@ hasown@^2.0.0, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -highlight.js@^10.7.1: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -15851,60 +15082,16 @@ html-encoding-sniffer@^4.0.0: dependencies: whatwg-encoding "^3.1.1" -html-entities@^2.3.2, html-entities@^2.3.3, html-entities@^2.4.0, html-entities@^2.5.2: +html-entities@^2.3.3, html-entities@^2.4.0, html-entities@^2.5.2: version "2.6.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== -html-escaper@^2.0.0, html-escaper@^2.0.2: +html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= - -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== - -html-webpack-plugin@^5.1.0: - version "5.5.3" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" - integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - htmlparser2@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" @@ -16401,7 +15588,7 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1, ipaddr.js@^2.1.0: +ipaddr.js@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== @@ -16471,13 +15658,6 @@ is-ci@3.0.1: dependencies: ci-info "^3.2.0" -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -16521,18 +15701,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-file-esm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-file-esm/-/is-file-esm-1.0.0.tgz#987086b0f5a5318179e9d30f4f2f8d37321e1b5f" - integrity sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA== - dependencies: - read-pkg-up "^7.0.1" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -16997,11 +16165,6 @@ java@^0.18, java@^0.18.0: nan "^2.23.0" node-gyp "^11.5.0" -javascript-stringify@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" - integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== - jest-bench@^29: version "29.7.1" resolved "https://registry.yarnpkg.com/jest-bench/-/jest-bench-29.7.1.tgz#2fd94552d9c8f4a6df8351785b067cc052ec2b19" @@ -17391,7 +16554,7 @@ jest-watcher@^29.7.0: jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^27.0.2, jest-worker@^27.4.5: +jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== @@ -17400,15 +16563,6 @@ jest-worker@^27.0.2, jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^28.0.2: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" @@ -17451,7 +16605,7 @@ jmespath@0.16.0: resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== -joi@^17.13.3, joi@^17.4.0: +joi@^17.13.3: version "17.13.3" resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== @@ -17492,11 +16646,6 @@ js-md4@^0.3.2: resolved "https://registry.yarnpkg.com/js-md4/-/js-md4-0.3.2.tgz#cd3b3dc045b0c404556c81ddb5756c23e59d7cf5" integrity sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA== -js-message@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/js-message/-/js-message-1.0.7.tgz#fbddd053c7a47021871bb8b2c95397cc17c20e47" - integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA== - js-object-pretty-print@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/js-object-pretty-print/-/js-object-pretty-print-0.3.0.tgz#4670e450066ee1eccf35174c7d197f5aa38bcf74" @@ -17627,7 +16776,7 @@ json-bigint@^1.0.0: dependencies: bignumber.js "^9.0.0" -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -17829,11 +16978,6 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - kuler@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" @@ -17851,14 +16995,7 @@ language-tags@^1.0.5: dependencies: language-subtag-registry "~0.3.2" -launch-editor-middleware@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" - integrity sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg== - dependencies: - launch-editor "^2.2.1" - -launch-editor@^2.2.1, launch-editor@^2.6.0, launch-editor@^2.6.1: +launch-editor@^2.6.1: version "2.10.0" resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.10.0.tgz#5ca3edfcb9667df1e8721310f3a40f1127d4bc42" integrity sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA== @@ -18140,11 +17277,6 @@ lightningcss@^1.32.0: lightningcss-win32-arm64-msvc "1.32.0" lightningcss-win32-x64-msvc "1.32.0" -lilconfig@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== - lines-and-columns@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" @@ -18240,7 +17372,7 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^4.1.0, loader-runner@^4.2.0: +loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== @@ -18250,15 +17382,6 @@ loader-utils@3.3.1: resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== -loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" - integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" @@ -18320,11 +17443,6 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash.defaultsdeep@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" - integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== - lodash.flow@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" @@ -18365,16 +17483,6 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.mapvalues@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -18395,17 +17503,12 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - lodash.upperfirst@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= -lodash@^3.10.1, lodash@^4.16.5, lodash@^4.17.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: +lodash@^3.10.1, lodash@^4.16.5, lodash@^4.17.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.23" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== @@ -18418,15 +17521,6 @@ log-symbols@^4.0.0, log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - log-update@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" @@ -18494,14 +17588,6 @@ lru-cache@^11.1.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A== -lru-cache@^4.0.1, lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -18588,7 +17674,7 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -18753,16 +17839,6 @@ math-intrinsics@^1.1.0: resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.30: - version "2.0.30" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" - integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -18773,13 +17849,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== - dependencies: - fs-monkey "^1.0.4" - memfs@^4.6.0: version "4.17.0" resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.17.0.tgz#a3c4b5490b9b1e7df5d433adc163e08208ce7ca2" @@ -18834,13 +17903,6 @@ merge-descriptors@1.0.3: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -18896,11 +17958,6 @@ mime@^3.0.0: resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -18936,7 +17993,7 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@2.9.0, mini-css-extract-plugin@^2.5.3: +mini-css-extract-plugin@2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235" integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== @@ -19173,7 +18230,7 @@ mkdirp@0.3.0: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= -mkdirp@^0.5.1, mkdirp@^0.5.6: +mkdirp@^0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -19195,11 +18252,6 @@ modify-values@^1.0.1: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -module-alias@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.3.tgz#ec2e85c68973bda6ab71ce7c93b763ec96053221" - integrity sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q== - moment-range@*, moment-range@^4.0.1, moment-range@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/moment-range/-/moment-range-4.0.2.tgz#f7c3863df2a1ed7fd1822ba5a7bcf53a78701be9" @@ -19224,11 +18276,6 @@ mrmime@2.0.0: resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== -mrmime@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" - integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -19331,15 +18378,6 @@ mysql@^2.18.1: safe-buffer "5.1.2" sqlstring "2.3.1" -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - named-placeholders@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" @@ -19685,6 +18723,11 @@ node-releases@^2.0.27: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== +node-releases@^2.0.36: + version "2.0.47" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.47.tgz#521bb2786da8eb140b748841c0b3b3a75334ffc4" + integrity sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og== + nopt@1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -19756,11 +18799,6 @@ normalize-package-data@^6.0.0: semver "^7.3.5" validate-npm-package-license "^3.0.4" -normalize-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" - integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -19771,11 +18809,6 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - npm-bundled@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" @@ -20005,7 +19038,7 @@ npmlog@^6.0.0: gauge "^4.0.0" set-blocking "^2.0.0" -nth-check@^2.0.0, nth-check@^2.0.1: +nth-check@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== @@ -20192,13 +19225,6 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -20231,7 +19257,7 @@ open@^7.3.1: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.0.2, open@^8.0.9, open@^8.4.0: +open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -20245,11 +19271,6 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - optimism@^0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.18.0.tgz#e7bb38b24715f3fdad8a9a7fc18e999144bbfa63" @@ -20298,7 +19319,7 @@ ora@5.3.0: strip-ansi "^6.0.0" wcwidth "^1.0.1" -ora@5.4.1, ora@^5.1.0, ora@^5.3.0: +ora@5.4.1, ora@^5.1.0: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== @@ -20436,14 +19457,6 @@ p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - p-retry@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" @@ -20583,14 +19596,6 @@ pako@^1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -20681,13 +19686,6 @@ parse5-html-rewriting-stream@7.0.0: parse5 "^7.0.0" parse5-sax-parser "^7.0.0" -parse5-htmlparser2-tree-adapter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - parse5-sax-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz#4c05064254f0488676aca75fb39ca069ec96dee5" @@ -20695,16 +19693,6 @@ parse5-sax-parser@^7.0.0: dependencies: parse5 "^7.0.0" -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parse5@^7.0.0: version "7.2.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" @@ -20971,11 +19959,6 @@ phin@^2.9.1: resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" @@ -21139,66 +20122,11 @@ pngjs@^4.0.1: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-4.0.1.tgz#f803869bb2fc1bfe1bf99aa4ec21c108117cfdbe" integrity sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg== -portfinder@^1.0.26: - version "1.0.32" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" - integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== - dependencies: - async "^2.6.4" - debug "^3.2.7" - mkdirp "^0.5.6" - possible-typed-array-names@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - postcss-loader@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-8.1.1.tgz#2822589e7522927344954acb55bbf26e8b195dfe" @@ -21208,76 +20136,17 @@ postcss-loader@8.1.1: jiti "^1.20.0" semver "^7.5.4" -postcss-loader@^6.1.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== - dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" - postcss-media-query-parser@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" integrity sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig== -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" - -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0, postcss-modules-extract-imports@^3.1.0: +postcss-modules-extract-imports@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== -postcss-modules-local-by-default@^4.0.3, postcss-modules-local-by-default@^4.0.5: +postcss-modules-local-by-default@^4.0.5: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== @@ -21286,7 +20155,7 @@ postcss-modules-local-by-default@^4.0.3, postcss-modules-local-by-default@^4.0.5 postcss-selector-parser "^7.0.0" postcss-value-parser "^4.1.0" -postcss-modules-scope@^3.0.0, postcss-modules-scope@^3.2.0: +postcss-modules-scope@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== @@ -21300,100 +20169,6 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" - integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - postcss-selector-parser@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" @@ -21402,21 +20177,6 @@ postcss-selector-parser@^7.0.0: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" @@ -21440,15 +20200,7 @@ postcss@8.4.41: picocolors "^1.0.1" source-map-js "^1.2.0" -postcss@^7.0.36: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.2.14, postcss@^8.2.6, postcss@^8.2.8, postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.31, postcss@^8.4.33, postcss@^8.4.43: +postcss@^8.2.14, postcss@^8.2.8, postcss@^8.4.23, postcss@^8.4.31, postcss@^8.4.33, postcss@^8.4.43: version "8.5.3" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== @@ -21528,7 +20280,7 @@ prettier@^1.16.4: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -"prettier@^1.18.2 || ^2.0.0", prettier@^2.0.5: +prettier@^2.0.5: version "2.5.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== @@ -21538,14 +20290,6 @@ pretty-bytes@^5.6.0: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - pretty-format@30.2.0: version "30.2.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.2.0.tgz#2d44fe6134529aed18506f6d11509d8a62775ebe" @@ -21604,15 +20348,6 @@ proggy@^3.0.0: resolved "https://registry.yarnpkg.com/proggy/-/proggy-3.0.0.tgz#874e91fed27fe00a511758e83216a6b65148bd6c" integrity sha512-QE8RApCM3IaRRxVzxrjbgNMpQEX6Wu0p0KBeoSiSEw5/bsGwZHsshF4LCxH2jp/r6BU+bqA3LrMDEYNfJnpD8Q== -progress-webpack-plugin@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz#278f5c1afd21af783aad72c5ec95241520230fe5" - integrity sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA== - dependencies: - chalk "^2.1.0" - figures "^2.0.0" - log-update "^2.3.0" - progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -21763,11 +20498,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -22601,7 +21331,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.1.1, read-pkg@^5.2.0: +read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== @@ -22808,22 +21538,6 @@ rehackt@^0.1.0: resolved "https://registry.yarnpkg.com/rehackt/-/rehackt-0.1.0.tgz#a7c5e289c87345f70da8728a7eb878e5d03c696b" integrity sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw== -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - request-progress@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" @@ -22898,7 +21612,7 @@ resolve@1.22.8: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.10: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1: version "1.22.11" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== @@ -22907,6 +21621,16 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.17 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.11: + version "1.22.12" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f" + integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== + dependencies: + es-errors "^1.3.0" + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.3: version "2.0.0-next.5" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" @@ -22921,14 +21645,6 @@ response-iterator@^0.2.6: resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -23247,11 +21963,6 @@ sax@>=0.6.0, sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -sax@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.5.0.tgz#b5549b671069b7aa392df55ec7574cf411179eb8" - integrity sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA== - saxes@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" @@ -23266,16 +21977,7 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: +schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -23313,7 +22015,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^2.1.1, selfsigned@^2.4.1: +selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -23341,7 +22043,7 @@ semver@7.6.3: resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -semver@7.7.2, semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3, semver@^7.7.2: +semver@7.7.2, semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3, semver@^7.7.2: version "7.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== @@ -23375,7 +22077,7 @@ seq-queue@^0.0.5: resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4= -serialize-javascript@^6.0.0, serialize-javascript@^6.0.2: +serialize-javascript@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== @@ -23629,15 +22331,6 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sirv@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446" - integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA== - dependencies: - "@polka/url" "^1.0.0-next.20" - mrmime "^1.0.0" - totalist "^3.0.0" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -23842,7 +22535,7 @@ sort-keys@^4.0.0: dependencies: is-plain-obj "^2.0.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0, source-map-js@^1.2.1: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== @@ -23871,11 +22564,6 @@ source-map-support@0.5.21, source-map-support@^0.5.10, source-map-support@^0.5.1 buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= - source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -24089,11 +22777,6 @@ ssri@^9.0.0: dependencies: minipass "^3.1.1" -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -24111,11 +22794,6 @@ stackback@0.0.2: resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== - statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -24182,14 +22860,6 @@ string-length@^4.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -24278,13 +22948,6 @@ strip-ansi@^3.0.0: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -24326,11 +22989,6 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -24338,16 +22996,16 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + strnum@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" @@ -24383,14 +23041,6 @@ styled-components@6.1.12: stylis "4.3.2" tslib "2.6.2" -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - stylis@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" @@ -24459,24 +23109,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= - -svgo@^2.7.0: - version "2.8.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.2.tgz#8e99b7ba5ac9ed7e3a446063865f61e03223fe6b" - integrity sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA== - dependencies: - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - sax "^1.5.0" - stable "^0.1.8" - symbol-observable@4.0.0, symbol-observable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" @@ -24505,7 +23137,7 @@ table@^6.0.9: string-width "^4.2.3" strip-ansi "^6.0.1" -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: +tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== @@ -24660,7 +23292,7 @@ term-img@^4.0.0: ansi-escapes "^4.1.0" iterm2-version "^4.1.0" -terser-webpack-plugin@^5.1.1, terser-webpack-plugin@^5.3.10: +terser-webpack-plugin@^5.3.10: version "5.3.11" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz#93c21f44ca86634257cac176f884f942b7ba3832" integrity sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ== @@ -24681,7 +23313,7 @@ terser@5.31.6: commander "^2.20.0" source-map-support "~0.5.20" -terser@^5.10.0, terser@^5.31.1: +terser@^5.31.1: version "5.38.1" resolved "https://registry.yarnpkg.com/terser/-/terser-5.38.1.tgz#a18d83c8acf3175e847ab0b66839f3c318167c58" integrity sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA== @@ -24748,36 +23380,11 @@ textextensions@^2.5.0: resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4" integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - thingies@^1.20.0: version "1.21.0" resolved "https://registry.yarnpkg.com/thingies/-/thingies-1.21.0.tgz#e80fbe58fd6fdaaab8fad9b67bd0a5c943c445c1" integrity sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g== -thread-loader@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-3.0.4.tgz#c392e4c0241fbc80430eb680e4886819b504a31b" - integrity sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA== - dependencies: - json-parse-better-errors "^1.0.2" - loader-runner "^4.1.0" - loader-utils "^2.0.0" - neo-async "^2.6.2" - schema-utils "^3.0.0" - thrift@0.20.0, thrift@^0.20.0, thrift@^0.9.3: version "0.20.0" resolved "https://registry.yarnpkg.com/thrift/-/thrift-0.20.0.tgz#b2dbeaaf7c2385aed2eba59d442c87f033fa8e5e" @@ -24956,11 +23563,6 @@ toml@^3.0.0: resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - tough-cookie@^4.1.2: version "4.1.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" @@ -25095,16 +23697,6 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" - integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== - dependencies: - "@types/strip-bom" "^3.0.0" - "@types/strip-json-comments" "0.0.30" - strip-bom "^3.0.0" - strip-json-comments "^2.0.0" - tslib@2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" @@ -25526,6 +24118,14 @@ update-browserslist-db@^1.1.4: escalade "^3.2.0" picocolors "^1.1.1" +update-browserslist-db@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -25609,11 +24209,6 @@ util@^0.12.4: is-typed-array "^1.1.3" which-typed-array "^1.1.2" -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -25814,46 +24409,6 @@ vue-component-type-helpers@^1.8.21: resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-1.8.22.tgz#24c1f324885e5652c7bcc5d9cbd76800b0af3809" integrity sha512-LK3wJHs3vJxHG292C8cnsRusgyC5SEZDCzDCD01mdE/AoREFMl2tzLRuzwyuEsOIz13tqgBcnvysN3Lxsa14Fw== -vue-eslint-parser@^7.0.0: - version "7.11.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz#214b5dea961007fcffb2ee65b8912307628d0daf" - integrity sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg== - dependencies: - debug "^4.1.1" - eslint-scope "^5.1.1" - eslint-visitor-keys "^1.1.0" - espree "^6.2.1" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^6.3.0" - -vue-hot-reload-api@^2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-loader@^17.0.0: - version "17.3.1" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-17.3.1.tgz#03b80e7f65727894ed6b29c65dd54ad215a40c38" - integrity sha512-nmVu7KU8geOyzsStyyaxID/uBGDMS8BkPXb6Lu2SNkMawriIbb+hYrNtgftHMKxOSkjjjTF5OSSwPo3KP59egg== - dependencies: - chalk "^4.1.0" - hash-sum "^2.0.0" - watchpack "^2.4.0" - -vue-style-loader@^4.1.0, vue-style-loader@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" - integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - vue@^3.0: version "3.3.8" resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc" @@ -25911,7 +24466,7 @@ watchpack@2.4.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -watchpack@^2.4.0, watchpack@^2.4.1: +watchpack@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== @@ -25953,32 +24508,6 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-bundle-analyzer@^4.4.0: - version "4.10.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" - integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== - dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - -webpack-chain@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" - integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^2.0.1" - webpack-dev-middleware@7.4.2, webpack-dev-middleware@^7.1.0: version "7.4.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz#40e265a3d3d26795585cff8207630d3a8ff05877" @@ -25991,17 +24520,6 @@ webpack-dev-middleware@7.4.2, webpack-dev-middleware@^7.1.0: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-middleware@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" - integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - webpack-dev-server@5.0.4: version "5.0.4" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz#cb6ea47ff796b9251ec49a94f24a425e12e3c9b8" @@ -26038,42 +24556,6 @@ webpack-dev-server@5.0.4: webpack-dev-middleware "^7.1.0" ws "^8.16.0" -webpack-dev-server@^4.7.3: - version "4.15.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" - integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.4" - ws "^8.13.0" - webpack-merge@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" @@ -26083,15 +24565,6 @@ webpack-merge@6.0.1: flat "^5.0.2" wildcard "^2.0.1" -webpack-merge@^5.7.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - webpack-sources@^3.0.0, webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" @@ -26104,11 +24577,6 @@ webpack-subresource-integrity@5.1.0: dependencies: typed-assert "^1.0.8" -webpack-virtual-modules@^0.4.2: - version "0.4.6" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45" - integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== - webpack@5.94.0: version "5.94.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f" @@ -26138,35 +24606,6 @@ webpack@5.94.0: watchpack "^2.4.1" webpack-sources "^3.2.3" -webpack@^5.54.0: - version "5.97.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.97.1.tgz#972a8320a438b56ff0f1d94ade9e82eac155fa58" - integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== - dependencies: - "@types/eslint-scope" "^3.7.7" - "@types/estree" "^1.0.6" - "@webassemblyjs/ast" "^1.14.1" - "@webassemblyjs/wasm-edit" "^1.14.1" - "@webassemblyjs/wasm-parser" "^1.14.1" - acorn "^8.14.0" - browserslist "^4.24.0" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.1" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" @@ -26195,7 +24634,7 @@ whatwg-encoding@^3.1.1: dependencies: iconv-lite "0.6.3" -whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0, whatwg-fetch@^3.6.2: +whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: version "3.6.19" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz#caefd92ae630b91c07345537e67f8354db470973" integrity sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw== @@ -26332,7 +24771,7 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -wildcard@^2.0.0, wildcard@^2.0.1: +wildcard@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== @@ -26392,14 +24831,6 @@ workerpool@^9.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -26525,7 +24956,7 @@ ws@^8.11.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== -ws@^8.13.0, ws@^8.16.0: +ws@^8.16.0: version "8.18.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== @@ -26617,11 +25048,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -26678,7 +25104,7 @@ yargs@17.7.2, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.1, yargs@ y18n "^5.0.5" yargs-parser "^21.1.1" -yargs@^16.0.0, yargs@^16.2.0: +yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -26724,16 +25150,6 @@ yoctocolors-cjs@^2.1.3: resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz#7e4964ea8ec422b7a40ac917d3a344cfd2304baa" integrity sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw== -yorkie@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yorkie/-/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" - integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== - dependencies: - execa "^0.8.0" - is-ci "^1.0.10" - normalize-path "^1.0.0" - strip-indent "^2.0.0" - zen-observable-ts@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" From 0b5bfac887dc376dfecf3219e2921a89de66c05a Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Fri, 12 Jun 2026 15:39:14 +0200 Subject: [PATCH 11/24] chore(client-react,client-dx): Migrate babel-eslint to @babel/eslint-parser babel-eslint has been deprecated since 2020 and was only resolving via hoisting from the legacy vue-cli toolkit until it was dropped. Use the maintained @babel/eslint-parser instead and declare it explicitly in both packages that reference it. --- packages/cubejs-client-dx/.eslintrc.js | 2 +- packages/cubejs-client-dx/package.json | 3 +- packages/cubejs-client-react/.eslintrc.js | 8 +++- packages/cubejs-client-react/package.json | 3 +- yarn.lock | 46 +++++++++++------------ 5 files changed, 33 insertions(+), 29 deletions(-) diff --git a/packages/cubejs-client-dx/.eslintrc.js b/packages/cubejs-client-dx/.eslintrc.js index 341ab49edc8e6..947ccc6f5d58a 100644 --- a/packages/cubejs-client-dx/.eslintrc.js +++ b/packages/cubejs-client-dx/.eslintrc.js @@ -3,7 +3,7 @@ module.exports = { plugins: [ 'import' ], - parser: 'babel-eslint', + parser: '@babel/eslint-parser', rules: { 'max-classes-per-file': 0, 'prefer-object-spread': 0, diff --git a/packages/cubejs-client-dx/package.json b/packages/cubejs-client-dx/package.json index 56e2cf283c2d5..aa9fc684eb726 100644 --- a/packages/cubejs-client-dx/package.json +++ b/packages/cubejs-client-dx/package.json @@ -26,7 +26,8 @@ ], "license": "MIT", "devDependencies": { - "@babel/core": "^7.3.3", + "@babel/core": "^7.13.8", + "@babel/eslint-parser": "^7", "@babel/preset-env": "^7.3.1", "@types/jest": "^29", "babel-jest": "^29", diff --git a/packages/cubejs-client-react/.eslintrc.js b/packages/cubejs-client-react/.eslintrc.js index 6485a14bbe6a6..21f61bfbb9bec 100644 --- a/packages/cubejs-client-react/.eslintrc.js +++ b/packages/cubejs-client-react/.eslintrc.js @@ -1,7 +1,13 @@ module.exports = { extends: 'airbnb', plugins: ['react', 'jsx-a11y', 'import'], - parser: 'babel-eslint', + parser: '@babel/eslint-parser', + parserOptions: { + requireConfigFile: false, + babelOptions: { + parserOpts: { plugins: ['jsx'] }, + }, + }, rules: { 'object-curly-newline': 0, 'react/jsx-no-bind': 0, diff --git a/packages/cubejs-client-react/package.json b/packages/cubejs-client-react/package.json index 0a885811cafcd..73c61407796c3 100644 --- a/packages/cubejs-client-react/package.json +++ b/packages/cubejs-client-react/package.json @@ -29,9 +29,10 @@ "ramda": "^0.27.2" }, "devDependencies": { + "@babel/core": "^7.13.8", + "@babel/eslint-parser": "^7", "@types/ramda": "^0.27.40", "@types/react": "^16.9.41", - "babel-eslint": "^9.0.0", "eslint": "^7.21.0", "eslint-config-airbnb": "^18.0.1", "eslint-config-airbnb-base": "^14.0.0", diff --git a/yarn.lock b/yarn.lock index 7d17a1dacf207..26b7ee52d704a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1446,6 +1446,15 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/eslint-parser@^7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.29.7.tgz#272cc7531972ff45bc0db96c45349cb7304d21e1" + integrity sha512-zxt+UJTOMKvUt3yOg+D58MLuz334pHp93qifMFcjIIO+9hN6t+ufw2gi7vDPMpxvfnHRR+3VVXvIjineCcgyXw== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + "@babel/generator@7.26.10": version "7.26.10" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.10.tgz#a60d9de49caca16744e6340c3658dfef6138c3f7" @@ -1650,7 +1659,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24", "@babel/parser@^7.25.0", "@babel/parser@^7.26.10", "@babel/parser@^7.29.0", "@babel/parser@^7.29.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24", "@babel/parser@^7.25.0", "@babel/parser@^7.26.10", "@babel/parser@^7.29.0", "@babel/parser@^7.29.7": version "7.29.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.7.tgz#837b87387cbf5ec5530cb634b3c622f68edb9334" integrity sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg== @@ -2550,7 +2559,7 @@ "@babel/parser" "^7.29.7" "@babel/types" "^7.29.7" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.24", "@babel/traverse@^7.25.2", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.8", "@babel/traverse@^7.29.7": +"@babel/traverse@^7.24", "@babel/traverse@^7.25.2", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.8", "@babel/traverse@^7.29.7": version "7.29.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.7.tgz#c47b07a41b95da0907d026b5dd894d98de7d2f2d" integrity sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw== @@ -4812,6 +4821,13 @@ resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-18.2.19.tgz#b5ba332a47bdf8660abbfb5369f2d4d0588bfefc" integrity sha512-bExj5JrByKPibsqBbn5Pjn8lo91AUOTsyP2hgKpnOnmSr62rhWSiRwXltgz2MCiZRmuUznpt93WiOLixgYfYvQ== +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@nodable/entities@2.1.0", "@nodable/entities@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2" @@ -10070,18 +10086,6 @@ b4a@^1.6.4: resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba" integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== -babel-eslint@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" - integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - eslint-scope "3.7.1" - eslint-visitor-keys "^1.0.0" - babel-jest@^29, babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" @@ -13339,14 +13343,6 @@ eslint-plugin-react@^7.15.1, eslint-plugin-react@^7.20.0: semver "^6.3.0" string.prototype.matchall "^4.0.6" -eslint-scope@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - integrity sha512-ivpbtpUgg9SJS4TLjK7KdcDhqc/E3CGItsvQbBNLkNGUeMhd5qnJcryba/brESS+dg3vrLqPuc/UcS7jRJdN5A== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -13377,12 +13373,12 @@ eslint-utils@^2.1.0: dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== @@ -13512,7 +13508,7 @@ esquery@^1.4.0, esquery@^1.4.2: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== From 1cb96ce2c788bd416c50bf6476c5533b403a44fa Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 18 Jun 2026 22:37:23 +0200 Subject: [PATCH 12/24] feat(cubestore): Upgrade docker image to Debian trixie and LLVM 22 --- .github/workflows/publish.yml | 2 +- .github/workflows/rust-cubestore-master.yml | 2 +- .github/workflows/rust-cubestore.yml | 4 ++-- rust/cubestore/CLAUDE.md | 6 +++--- rust/cubestore/Dockerfile | 6 +++--- rust/cubestore/builder.Dockerfile | 16 +++++++-------- rust/cubestore/docker-bake.hcl | 22 ++++++++++----------- 7 files changed, 28 insertions(+), 30 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1c9fea2ad1fdf..92d806deee2b3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -729,7 +729,7 @@ jobs: run: vcpkg integrate install; vcpkg install openssl:x64-windows - name: Instal LLVM for Windows if: ${{ startsWith(matrix.os, 'windows') }} - run: choco install -y --force llvm --version 18.1.6 + run: choco install -y --force llvm --version 22.1.0 - name: Set Env Variables for Windows uses: allenevans/set-env@v4.0.0 if: ${{ startsWith(matrix.os, 'windows') }} diff --git a/.github/workflows/rust-cubestore-master.yml b/.github/workflows/rust-cubestore-master.yml index d80cb7a336fa5..88dbace7749e9 100644 --- a/.github/workflows/rust-cubestore-master.yml +++ b/.github/workflows/rust-cubestore-master.yml @@ -211,7 +211,7 @@ jobs: run: vcpkg integrate install; vcpkg install openssl:x64-windows - name: Instal LLVM for Windows if: ${{ startsWith(matrix.os, 'windows') }} - run: choco install -y --force llvm --version 18.1.6 + run: choco install -y --force llvm --version 22.1.0 - name: Set Env Variables for Windows uses: allenevans/set-env@v4.0.0 if: ${{ startsWith(matrix.os, 'windows') }} diff --git a/.github/workflows/rust-cubestore.yml b/.github/workflows/rust-cubestore.yml index 4e15b958e2ffb..6e55bee599df1 100644 --- a/.github/workflows/rust-cubestore.yml +++ b/.github/workflows/rust-cubestore.yml @@ -28,7 +28,7 @@ jobs: matrix: rust: [nightly-2025-08-01] container: - image: cubejs/rust-builder:bookworm-llvm-18 + image: cubejs/rust-builder:trixie-llvm-22 env: RUST: ${{ matrix.rust }} steps: @@ -150,7 +150,7 @@ jobs: run: vcpkg integrate install; vcpkg install openssl:x64-windows - name: Instal LLVM for Windows if: ${{ startsWith(matrix.os, 'windows') }} - run: choco install -y --force llvm --version 18.1.6 + run: choco install -y --force llvm --version 22.1.0 - name: Set Env Variables for Windows uses: allenevans/set-env@v4.0.0 if: ${{ startsWith(matrix.os, 'windows') }} diff --git a/rust/cubestore/CLAUDE.md b/rust/cubestore/CLAUDE.md index 8ed13d4deeaf0..0a10da86ce11a 100644 --- a/rust/cubestore/CLAUDE.md +++ b/rust/cubestore/CLAUDE.md @@ -143,8 +143,8 @@ The codebase uses a custom dependency injection system defined in `config/inject The project includes Docker configurations for building and deploying CubeStore: -- **`builder.Dockerfile`**: Defines the base build image with Rust nightly-2025-08-01, LLVM 18, and build dependencies -- **`Dockerfile`**: Production Dockerfile that uses `cubejs/rust-builder:bookworm-llvm-18` base image and copies rust-toolchain.toml +- **`builder.Dockerfile`**: Defines the base build image with Rust nightly-2025-08-01, LLVM 22, and build dependencies +- **`Dockerfile`**: Production Dockerfile that uses `cubejs/rust-builder:trixie-llvm-22` base image (Debian 13 trixie) and copies rust-toolchain.toml - **GitHub Actions**: Multiple CI/CD workflows use the same Rust version ## Updating Rust Version @@ -156,4 +156,4 @@ When updating the Rust version, ensure ALL these files are kept in sync: 3. **`Dockerfile`** - Copies rust-toolchain.toml (no manual update needed if builder image is updated) 4. **GitHub Workflows** - Update all occurrences of the Rust nightly version in `.github/workflows/` directory -**Note**: The `cubejs/rust-builder:bookworm-llvm-18` Docker image tag may also need updating if the builder.Dockerfile changes significantly. +**Note**: The `cubejs/rust-builder:trixie-llvm-22` Docker image tag may also need updating if the builder.Dockerfile changes significantly. diff --git a/rust/cubestore/Dockerfile b/rust/cubestore/Dockerfile index f8c9bef78976d..451b91304601f 100644 --- a/rust/cubestore/Dockerfile +++ b/rust/cubestore/Dockerfile @@ -1,4 +1,4 @@ -FROM cubejs/rust-builder:bookworm-llvm-18 AS builder +FROM cubejs/rust-builder:trixie-llvm-22 AS builder WORKDIR /build/cubestore @@ -28,13 +28,13 @@ COPY cubestore/cubestore cubestore RUN [ "$WITH_AVX2" -eq "1" ] && export RUSTFLAGS="-C target-feature=+avx2"; \ cargo build --release -p cubestore -FROM debian:bookworm-slim +FROM debian:trixie-slim WORKDIR /cube RUN set -ex; \ apt-get update; \ - apt-get install -y libssl3 ca-certificates + apt-get install -y libssl3t64 ca-certificates COPY --from=builder /build/cubestore/target/release/cubestored . diff --git a/rust/cubestore/builder.Dockerfile b/rust/cubestore/builder.Dockerfile index 0f0a424703028..87f74088036d0 100644 --- a/rust/cubestore/builder.Dockerfile +++ b/rust/cubestore/builder.Dockerfile @@ -1,10 +1,10 @@ -ARG RUST_TAG=bookworm-slim -ARG OS_NAME=bookworm +ARG RUST_TAG=trixie-slim +ARG OS_NAME=trixie FROM rust:$RUST_TAG AS base -ARG OS_NAME=bookworm -ARG LLVM_VERSION=18 +ARG OS_NAME=trixie +ARG LLVM_VERSION=22 RUN rustup update && \ rustup default nightly-2025-08-01 && \ @@ -12,11 +12,9 @@ RUN rustup update && \ RUN apt update \ && apt upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common libssl-dev pkg-config wget gnupg git apt-transport-https ca-certificates \ - && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \ - # https://github.com/llvm/llvm-project/issues/62475 \ - && add-apt-repository --yes "deb https://apt.llvm.org/$OS_NAME/ llvm-toolchain-$OS_NAME-$LLVM_VERSION main" \ - && add-apt-repository --yes "deb https://apt.llvm.org/$OS_NAME/ llvm-toolchain-$OS_NAME-$LLVM_VERSION main" \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y libssl-dev pkg-config wget gnupg git apt-transport-https ca-certificates \ + && wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor -o /usr/share/keyrings/llvm-snapshot.gpg \ + && echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg] https://apt.llvm.org/$OS_NAME/ llvm-toolchain-$OS_NAME-$LLVM_VERSION main" > /etc/apt/sources.list.d/llvm.list \ && apt update \ && apt install -y git llvm-$LLVM_VERSION clang-$LLVM_VERSION libclang-$LLVM_VERSION-dev clang-$LLVM_VERSION lld-$LLVM_VERSION cmake \ && rm -rf /var/lib/apt/lists/*; diff --git a/rust/cubestore/docker-bake.hcl b/rust/cubestore/docker-bake.hcl index 87076611bf1fe..55923c025fe1f 100644 --- a/rust/cubestore/docker-bake.hcl +++ b/rust/cubestore/docker-bake.hcl @@ -1,25 +1,25 @@ -# EOL LTS 2028-06-30 -target "rust-builder-bookworm" { +# EOL LTS 2030-06-30 +target "rust-builder-trixie" { context = "." dockerfile = "builder.Dockerfile" args = { - RUST_TAG = "1-slim-bookworm" - OS_NAME = "bookworm" - LLVM_VERSION = "18" + RUST_TAG = "1-slim-trixie" + OS_NAME = "trixie" + LLVM_VERSION = "22" } - tags = ["cubejs/rust-builder:bookworm-llvm-18"] + tags = ["cubejs/rust-builder:trixie-llvm-22"] platforms = ["linux/amd64", "linux/arm64"] } -# EOL LTS 2026-08-31 -target "rust-builder-bullseye" { +# EOL LTS 2028-06-30 +target "rust-builder-bookworm" { context = "." dockerfile = "builder.Dockerfile" args = { - RUST_TAG = "1-slim-bullseye" - OS_NAME = "bullseye" + RUST_TAG = "1-slim-bookworm" + OS_NAME = "bookworm" LLVM_VERSION = "18" } - tags = ["cubejs/rust-builder:bullseye-llvm-18"] + tags = ["cubejs/rust-builder:bookworm-llvm-18"] platforms = ["linux/amd64", "linux/arm64"] } From f3875ec1826dcae4c489c68a6e3b7a2f06569200 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 18 Jun 2026 23:05:49 +0200 Subject: [PATCH 13/24] feat(docker)!: Upgrade Python from 3.11 to 3.13 BREAKING CHANGE: Users who install custom Python packages into the Cube image (e.g. for Python/Jinja data models) must target Python 3.13. Packages built for 3.11 will not load. --- .github/workflows/master.yml | 8 ++++---- .github/workflows/push.yml | 8 ++++---- packages/cubejs-docker/dev.Dockerfile | 4 ++-- packages/cubejs-docker/latest-debian-jdk.Dockerfile | 4 ++-- packages/cubejs-docker/latest.Dockerfile | 4 ++-- packages/cubejs-docker/local.Dockerfile | 2 +- packages/cubejs-docker/testing-drivers.Dockerfile | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 555c390366e80..ab0c6d65571d5 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -45,7 +45,7 @@ jobs: timeout-minutes: 60 name: Build Linux Native backend for Dev image container: - image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025-python-3.11 + image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025-python-3.13 steps: - name: Checkout @@ -77,14 +77,14 @@ jobs: run: npm install -g cargo-cp-artifact@0.1 - name: Build native (with Python) env: - PYO3_PYTHON: python3.11 + PYO3_PYTHON: python3.13 CARGO_BUILD_TARGET: x86_64-unknown-linux-gnu working-directory: ./packages/cubejs-backend-native run: yarn run native:build-debug-python - name: Store build artifact for dev image uses: actions/upload-artifact@v4 with: - name: "native-linux-x64-glibc-3.11.node" # this name is referenced below in docker-image-dev + name: "native-linux-x64-glibc-3.13.node" # this name is referenced below in docker-image-dev path: ./packages/cubejs-backend-native/index.node overwrite: true @@ -99,7 +99,7 @@ jobs: - name: Download backend-native artifact uses: actions/download-artifact@v4 with: - name: "native-linux-x64-glibc-3.11.node" # this name is referenced in above in native_linux + name: "native-linux-x64-glibc-3.13.node" # this name is referenced in above in native_linux path: ./packages/cubejs-backend-native/ - name: Login to DockerHub uses: docker/login-action@v3 diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 9071ad04d0940..3c0b3e1631426 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -40,7 +40,7 @@ on: env: # Current user version for Python. Should be aligned between build-native & docker-dev - PYTHON_VERSION_CURRENT: 3.11 + PYTHON_VERSION_CURRENT: 3.13 jobs: latest-tag-sha: @@ -80,7 +80,7 @@ jobs: # node-version: [24.x, 26.x] node-version: [24.x] # Don't forget to update build-native-release - python-version: [3.11] + python-version: [3.13] fail-fast: false steps: @@ -275,7 +275,7 @@ jobs: strategy: matrix: # Don't forget to align with PYTHON_VERSION_CURRENT - python-version: [ 3.11 ] + python-version: [ 3.13 ] fail-fast: false container: image: cubejs/rust-cross:x86_64-unknown-linux-gnu-31072025-python-${{ matrix.python-version }} @@ -550,7 +550,7 @@ jobs: strategy: matrix: node-version: [ 24.x ] - python-version: [ 3.11 ] + python-version: [ 3.13 ] use_tesseract_sql_planner: [ true, false ] fail-fast: false diff --git a/packages/cubejs-docker/dev.Dockerfile b/packages/cubejs-docker/dev.Dockerfile index 0e032e85a3c07..b1be35ba05dc1 100644 --- a/packages/cubejs-docker/dev.Dockerfile +++ b/packages/cubejs-docker/dev.Dockerfile @@ -10,7 +10,7 @@ RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ # python3 package is necessary to install `python3` executable for node-gyp && apt-get install -y --no-install-recommends libssl3 curl \ - cmake python3 python3.11 libpython3.11-dev gcc g++ make cmake openjdk-17-jdk-headless \ + cmake python3 python3.13 libpython3.13-dev gcc g++ make cmake openjdk-17-jdk-headless \ && rm -rf /var/lib/apt/lists/* ENV RUSTUP_HOME=/usr/local/rustup @@ -171,7 +171,7 @@ FROM base AS final ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ - && apt-get install -y ca-certificates python3.11 libpython3.11-dev \ + && apt-get install -y ca-certificates python3.13 libpython3.13-dev \ && apt-get clean COPY --from=build /cubejs . diff --git a/packages/cubejs-docker/latest-debian-jdk.Dockerfile b/packages/cubejs-docker/latest-debian-jdk.Dockerfile index 04942349f0bef..34c325b0ae677 100644 --- a/packages/cubejs-docker/latest-debian-jdk.Dockerfile +++ b/packages/cubejs-docker/latest-debian-jdk.Dockerfile @@ -12,7 +12,7 @@ RUN yarn config set network-timeout 120000 -g RUN apt-get update \ # python3 package is necessary to install `python3` executable for node-gyp # libpython3-dev is needed to trigger post-installer to download native with python - && apt-get install -y python3 python3.11 libpython3.11-dev gcc g++ make cmake openjdk-17-jdk-headless \ + && apt-get install -y python3 python3.13 libpython3.13-dev gcc g++ make cmake openjdk-17-jdk-headless \ && rm -rf /var/lib/apt/lists/* # We are copying root yarn.lock file to the context folder during the Publish GH @@ -32,7 +32,7 @@ ENV CUBEJS_DOCKER_IMAGE_TAG=latest RUN groupadd cube && useradd -ms /bin/bash -g cube cube \ && DEBIAN_FRONTEND=noninteractive \ && apt-get update \ - && apt-get install -y --no-install-recommends libssl3 openjdk-17-jre-headless python3.11 libpython3.11-dev \ + && apt-get install -y --no-install-recommends libssl3 openjdk-17-jre-headless python3.13 libpython3.13-dev \ && rm -rf /var/lib/apt/lists/* \ && mkdir cube \ && chown -R cube:cube /tmp /cube /usr diff --git a/packages/cubejs-docker/latest.Dockerfile b/packages/cubejs-docker/latest.Dockerfile index a963e4a44c3ff..a71ddcae7e780 100644 --- a/packages/cubejs-docker/latest.Dockerfile +++ b/packages/cubejs-docker/latest.Dockerfile @@ -11,7 +11,7 @@ RUN yarn config set network-timeout 120000 -g RUN apt-get update \ # python3 package is necessary to install `python3` executable for node-gyp # libpython3-dev is needed to trigger post-installer to download native with python - && apt-get install -y python3 python3.11 libpython3.11-dev gcc g++ make cmake ca-certificates \ + && apt-get install -y python3 python3.13 libpython3.13-dev gcc g++ make cmake ca-certificates \ && rm -rf /var/lib/apt/lists/* # We are copying root yarn.lock file to the context folder during the Publish GH @@ -30,7 +30,7 @@ ENV CUBEJS_DOCKER_IMAGE_TAG=latest RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ - && apt-get install -y --no-install-recommends libssl3 python3.11 libpython3.11-dev \ + && apt-get install -y --no-install-recommends libssl3 python3.13 libpython3.13-dev \ && rm -rf /var/lib/apt/lists/* RUN yarn policies set-version v1.22.22 diff --git a/packages/cubejs-docker/local.Dockerfile b/packages/cubejs-docker/local.Dockerfile index 8f5b5b709e8ec..70f381d6d899b 100644 --- a/packages/cubejs-docker/local.Dockerfile +++ b/packages/cubejs-docker/local.Dockerfile @@ -11,7 +11,7 @@ ENV CUBEJS_DOCKER_IMAGE_TAG=latest RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ # python3 package is necessary to install `python3` executable for node-gyp - && apt-get install -y --no-install-recommends libssl3 python3 python3.11 libpython3.11-dev ca-certificates \ + && apt-get install -y --no-install-recommends libssl3 python3 python3.13 libpython3.13-dev ca-certificates \ && rm -rf /var/lib/apt/lists/* ENV NODE_ENV=production diff --git a/packages/cubejs-docker/testing-drivers.Dockerfile b/packages/cubejs-docker/testing-drivers.Dockerfile index 3ffac40e23be2..ac0ad41b31db3 100644 --- a/packages/cubejs-docker/testing-drivers.Dockerfile +++ b/packages/cubejs-docker/testing-drivers.Dockerfile @@ -167,7 +167,7 @@ FROM base AS final ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ - && apt-get install -y ca-certificates python3.11 libpython3.11-dev \ + && apt-get install -y ca-certificates python3.13 libpython3.13-dev \ && apt-get clean COPY --from=build /cubejs . From 9d00c83b4af7f749dfb5329d93fe8b2f165edcda Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 18 Jun 2026 23:09:28 +0200 Subject: [PATCH 14/24] feat(docker)!: Upgrade OpenJDK from 17 to 21 BREAKING CHANGE: The -jdk image now runs Java 21. JDBC drivers and custom JARs must be compatible with OpenJDK 21. --- packages/cubejs-docker/dev.Dockerfile | 2 +- packages/cubejs-docker/latest-debian-jdk.Dockerfile | 4 ++-- packages/cubejs-docker/testing-drivers.Dockerfile | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/cubejs-docker/dev.Dockerfile b/packages/cubejs-docker/dev.Dockerfile index b1be35ba05dc1..de348faabeadd 100644 --- a/packages/cubejs-docker/dev.Dockerfile +++ b/packages/cubejs-docker/dev.Dockerfile @@ -10,7 +10,7 @@ RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ # python3 package is necessary to install `python3` executable for node-gyp && apt-get install -y --no-install-recommends libssl3 curl \ - cmake python3 python3.13 libpython3.13-dev gcc g++ make cmake openjdk-17-jdk-headless \ + cmake python3 python3.13 libpython3.13-dev gcc g++ make cmake openjdk-21-jdk-headless \ && rm -rf /var/lib/apt/lists/* ENV RUSTUP_HOME=/usr/local/rustup diff --git a/packages/cubejs-docker/latest-debian-jdk.Dockerfile b/packages/cubejs-docker/latest-debian-jdk.Dockerfile index 34c325b0ae677..3f5cb0c334c7b 100644 --- a/packages/cubejs-docker/latest-debian-jdk.Dockerfile +++ b/packages/cubejs-docker/latest-debian-jdk.Dockerfile @@ -12,7 +12,7 @@ RUN yarn config set network-timeout 120000 -g RUN apt-get update \ # python3 package is necessary to install `python3` executable for node-gyp # libpython3-dev is needed to trigger post-installer to download native with python - && apt-get install -y python3 python3.13 libpython3.13-dev gcc g++ make cmake openjdk-17-jdk-headless \ + && apt-get install -y python3 python3.13 libpython3.13-dev gcc g++ make cmake openjdk-21-jdk-headless \ && rm -rf /var/lib/apt/lists/* # We are copying root yarn.lock file to the context folder during the Publish GH @@ -32,7 +32,7 @@ ENV CUBEJS_DOCKER_IMAGE_TAG=latest RUN groupadd cube && useradd -ms /bin/bash -g cube cube \ && DEBIAN_FRONTEND=noninteractive \ && apt-get update \ - && apt-get install -y --no-install-recommends libssl3 openjdk-17-jre-headless python3.13 libpython3.13-dev \ + && apt-get install -y --no-install-recommends libssl3 openjdk-21-jre-headless python3.13 libpython3.13-dev \ && rm -rf /var/lib/apt/lists/* \ && mkdir cube \ && chown -R cube:cube /tmp /cube /usr diff --git a/packages/cubejs-docker/testing-drivers.Dockerfile b/packages/cubejs-docker/testing-drivers.Dockerfile index ac0ad41b31db3..971834daf0423 100644 --- a/packages/cubejs-docker/testing-drivers.Dockerfile +++ b/packages/cubejs-docker/testing-drivers.Dockerfile @@ -13,7 +13,7 @@ ENV CI=0 RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ && apt-get install -y --no-install-recommends libssl3 curl \ - cmake python3 gcc g++ make cmake openjdk-17-jdk-headless unzip \ + cmake python3 gcc g++ make cmake openjdk-21-jdk-headless unzip \ && rm -rf /var/lib/apt/lists/* ENV CUBESTORE_SKIP_POST_INSTALL=true From 45b2967499c5323d6164ab3915c2ede69185e55a Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 18 Jun 2026 23:11:07 +0200 Subject: [PATCH 15/24] feat(docker): Upgrade Debian to Trixie --- packages/cubejs-docker/dev.Dockerfile | 4 ++-- packages/cubejs-docker/latest-debian-jdk.Dockerfile | 6 +++--- packages/cubejs-docker/latest.Dockerfile | 6 +++--- packages/cubejs-docker/local.Dockerfile | 4 ++-- packages/cubejs-docker/testing-drivers.Dockerfile | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/cubejs-docker/dev.Dockerfile b/packages/cubejs-docker/dev.Dockerfile index de348faabeadd..6347ebd1d6fb2 100644 --- a/packages/cubejs-docker/dev.Dockerfile +++ b/packages/cubejs-docker/dev.Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.18.0-bookworm-slim AS base +FROM node:24.18.0-trixie-slim AS base ARG IMAGE_VERSION=dev @@ -9,7 +9,7 @@ ENV CI=0 RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ # python3 package is necessary to install `python3` executable for node-gyp - && apt-get install -y --no-install-recommends libssl3 curl \ + && apt-get install -y --no-install-recommends libssl3t64 curl \ cmake python3 python3.13 libpython3.13-dev gcc g++ make cmake openjdk-21-jdk-headless \ && rm -rf /var/lib/apt/lists/* diff --git a/packages/cubejs-docker/latest-debian-jdk.Dockerfile b/packages/cubejs-docker/latest-debian-jdk.Dockerfile index 3f5cb0c334c7b..84d1e215463ea 100644 --- a/packages/cubejs-docker/latest-debian-jdk.Dockerfile +++ b/packages/cubejs-docker/latest-debian-jdk.Dockerfile @@ -1,5 +1,5 @@ # syntax=docker/dockerfile-upstream:master-experimental -FROM node:24.18.0-bookworm-slim AS builder +FROM node:24.18.0-trixie-slim AS builder WORKDIR /cube COPY . . @@ -22,7 +22,7 @@ RUN yarn install --prod \ && rm -rf /cube/node_modules/duckdb/src \ && yarn cache clean -FROM node:24.18.0-bookworm-slim +FROM node:24.18.0-trixie-slim ARG IMAGE_VERSION=unknown @@ -32,7 +32,7 @@ ENV CUBEJS_DOCKER_IMAGE_TAG=latest RUN groupadd cube && useradd -ms /bin/bash -g cube cube \ && DEBIAN_FRONTEND=noninteractive \ && apt-get update \ - && apt-get install -y --no-install-recommends libssl3 openjdk-21-jre-headless python3.13 libpython3.13-dev \ + && apt-get install -y --no-install-recommends libssl3t64 openjdk-21-jre-headless python3.13 libpython3.13-dev \ && rm -rf /var/lib/apt/lists/* \ && mkdir cube \ && chown -R cube:cube /tmp /cube /usr diff --git a/packages/cubejs-docker/latest.Dockerfile b/packages/cubejs-docker/latest.Dockerfile index a71ddcae7e780..937f741e93d41 100644 --- a/packages/cubejs-docker/latest.Dockerfile +++ b/packages/cubejs-docker/latest.Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.18.0-bookworm-slim AS builder +FROM node:24.18.0-trixie-slim AS builder WORKDIR /cube COPY . . @@ -21,7 +21,7 @@ RUN yarn install --prod \ && rm -rf /cube/node_modules/duckdb/src \ && yarn cache clean -FROM node:24.18.0-bookworm-slim +FROM node:24.18.0-trixie-slim ARG IMAGE_VERSION=unknown @@ -30,7 +30,7 @@ ENV CUBEJS_DOCKER_IMAGE_TAG=latest RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ - && apt-get install -y --no-install-recommends libssl3 python3.13 libpython3.13-dev \ + && apt-get install -y --no-install-recommends libssl3t64 python3.13 libpython3.13-dev \ && rm -rf /var/lib/apt/lists/* RUN yarn policies set-version v1.22.22 diff --git a/packages/cubejs-docker/local.Dockerfile b/packages/cubejs-docker/local.Dockerfile index 70f381d6d899b..f37dd1a5893e7 100644 --- a/packages/cubejs-docker/local.Dockerfile +++ b/packages/cubejs-docker/local.Dockerfile @@ -1,7 +1,7 @@ ARG DEV_BUILD_IMAGE=cubejs/cube:build FROM $DEV_BUILD_IMAGE AS build -FROM node:24.18.0-bookworm-slim +FROM node:24.18.0-trixie-slim ARG IMAGE_VERSION=dev @@ -11,7 +11,7 @@ ENV CUBEJS_DOCKER_IMAGE_TAG=latest RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ # python3 package is necessary to install `python3` executable for node-gyp - && apt-get install -y --no-install-recommends libssl3 python3 python3.13 libpython3.13-dev ca-certificates \ + && apt-get install -y --no-install-recommends libssl3t64 python3 python3.13 libpython3.13-dev ca-certificates \ && rm -rf /var/lib/apt/lists/* ENV NODE_ENV=production diff --git a/packages/cubejs-docker/testing-drivers.Dockerfile b/packages/cubejs-docker/testing-drivers.Dockerfile index 971834daf0423..98f428f5d3511 100644 --- a/packages/cubejs-docker/testing-drivers.Dockerfile +++ b/packages/cubejs-docker/testing-drivers.Dockerfile @@ -1,7 +1,7 @@ ###################################################################### # Base image # ###################################################################### -FROM node:24.18.0-bookworm-slim AS base +FROM node:24.18.0-trixie-slim AS base ARG IMAGE_VERSION=dev @@ -12,7 +12,7 @@ ENV CI=0 RUN DEBIAN_FRONTEND=noninteractive \ && apt-get update \ - && apt-get install -y --no-install-recommends libssl3 curl \ + && apt-get install -y --no-install-recommends libssl3t64 curl \ cmake python3 gcc g++ make cmake openjdk-21-jdk-headless unzip \ && rm -rf /var/lib/apt/lists/* From 5040725872743684434f3186adb9498ce1512433 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Fri, 19 Jun 2026 12:20:04 +0200 Subject: [PATCH 16/24] feat(tesseract)!: Enable Tesseract planner and pre-aggregations by default Tesseract is now the default SQL planner. CUBEJS_TESSERACT_SQL_PLANNER defaults to true (TS env + Rust cubesql config); explicitly disabling it falls back to the legacy planner and emits a one-time deprecation warning, since the legacy planner will be removed in the near future. Tesseract pre-aggregation planning is no longer independently configurable: the CUBEJS_TESSERACT_PRE_AGGREGATIONS env var is dropped, and pre-aggregation planning now follows CUBEJS_TESSERACT_SQL_PLANNER. BaseQuery still honors neverUseSqlPlannerPreaggregation() so CubeStoreQuery stays opted out for correctness (HLL/multi-stage). --- .github/workflows/drivers-tests.yml | 24 +- .github/workflows/push.yml | 14 +- CLAUDE.md | 2 +- .../data-modeling/concepts/calendar-cubes.mdx | 3 +- docs-mintlify/docs/data-modeling/measures.mdx | 4 +- .../docs/data-modeling/multi-fact-views.mdx | 4 +- .../matching-pre-aggregations.mdx | 5 +- .../data-modeling/period-over-period.mdx | 3 +- .../recipes/data-modeling/share-of-total.mdx | 4 +- docs-mintlify/recipes/data-modeling/xirr.mdx | 3 +- .../configuration/environment-variables.mdx | 16 +- .../reference/data-modeling/dimensions.mdx | 3 +- .../reference/data-modeling/measures.mdx | 10 +- .../reference/environment-variables.mdx | 16 +- .../data-modeling/concepts/calendar-cubes.mdx | 3 +- .../concepts/multi-fact-queries.mdx | 3 +- .../concepts/multi-stage-calculations.mdx | 3 +- .../recipes/period-over-period.mdx | 3 +- .../product/data-modeling/recipes/xirr.mdx | 3 +- .../data-modeling/reference/measures.mdx | 7 +- .../reference/types-and-formats.mdx | 6 +- packages/cubejs-backend-shared/src/env.ts | 17 +- .../src/adapter/BaseQuery.js | 10 +- .../pre-aggregations-string-measure.test.ts | 2 +- .../postgres/pre-aggregations.test.ts | 2 +- .../test/unit/base-query.test.ts | 120 +- .../test/unit/mssql-query.test.ts | 16 +- .../test/unit/postgres-query.test.ts | 21 +- ...ckhouse-export-bucket-s3-full.test.ts.snap | 810 ++++++++++++ ...-export-bucket-s3-prefix-full.test.ts.snap | 810 ++++++++++++ ...jdbc-export-bucket-azure-full.test.ts.snap | 651 ++++++++++ ...port-bucket-azure-prefix-full.test.ts.snap | 651 ++++++++++ ...s-jdbc-export-bucket-gcs-full.test.ts.snap | 651 ++++++++++ ...export-bucket-gcs-prefix-full.test.ts.snap | 651 ++++++++++ ...ks-jdbc-export-bucket-s3-full.test.ts.snap | 651 ++++++++++ ...-export-bucket-s3-prefix-full.test.ts.snap | 651 ++++++++++ ...gres-pre-agg-credentials-full.test.ts.snap | 1085 +++++++++++++++++ ...edshift-export-bucket-s3-full.test.ts.snap | 519 ++++++++ .../snowflake-encrypted-pk-full.test.ts.snap | 612 ++++++++++ ...lake-export-bucket-azure-full.test.ts.snap | 612 ++++++++++ ...port-bucket-azure-prefix-full.test.ts.snap | 612 ++++++++++ ...-via-storage-integration-full.test.ts.snap | 612 ++++++++++ ...wflake-export-bucket-gcs-full.test.ts.snap | 612 ++++++++++ ...export-bucket-gcs-prefix-full.test.ts.snap | 612 ++++++++++ ...owflake-export-bucket-s3-full.test.ts.snap | 612 ++++++++++ ...-export-bucket-s3-prefix-full.test.ts.snap | 612 ++++++++++ ...ge-integration-iam-roles-full.test.ts.snap | 612 ++++++++++ ...x-postgresql-pre-aggregations.test.ts.snap | 74 ++ ...i-postgresql-pre-aggregations.test.ts.snap | 136 ++- .../__snapshots__/smoke-cubesql.test.ts.snap | 54 +- rust/cubesql/cubesql/src/config/mod.rs | 2 +- 51 files changed, 12959 insertions(+), 272 deletions(-) diff --git a/.github/workflows/drivers-tests.yml b/.github/workflows/drivers-tests.yml index e323250ab0911..11f6bcb41c6e9 100644 --- a/.github/workflows/drivers-tests.yml +++ b/.github/workflows/drivers-tests.yml @@ -62,7 +62,7 @@ on: use_tesseract_sql_planner: description: 'Enable TESSERACT_SQL_PLANNER?' required: true - default: 'false' + default: 'true' type: choice options: - 'true' @@ -280,28 +280,28 @@ jobs: - snowflake-export-bucket-azure-via-storage-integration - snowflake-export-bucket-gcs - snowflake-export-bucket-gcs-prefix - use_tesseract_sql_planner: [ false ] + use_tesseract_sql_planner: [ true ] include: - database: postgres - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: snowflake - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: redshift - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: bigquery-export-bucket-gcs - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: athena-export-bucket-s3 - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: databricks-jdbc - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: mysql - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: clickhouse - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: mssql - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - database: oracle - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false fail-fast: false steps: diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 3c0b3e1631426..418483142ec66 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -419,23 +419,23 @@ jobs: # 'dremio' # Commented out because of flaky integration tests # 'vertica' ] - use_tesseract_sql_planner: [ false ] + use_tesseract_sql_planner: [ true ] include: - db: postgres node-version: 24.x - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - db: mssql node-version: 24.x - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - db: firebolt node-version: 22.x - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - db: mysql node-version: 22.x - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false - db: clickhouse node-version: 22.x - use_tesseract_sql_planner: true + use_tesseract_sql_planner: false fail-fast: false steps: @@ -502,7 +502,6 @@ jobs: (!contains(env.CLOUD_DATABASES, matrix.db)) env: CUBEJS_TESSERACT_SQL_PLANNER: ${{ matrix.use_tesseract_sql_planner }} - CUBEJS_TESSERACT_PRE_AGGREGATIONS: ${{ matrix.use_tesseract_sql_planner }} # Firebolt Integration DRIVERS_TESTS_FIREBOLT_CUBEJS_FIREBOLT_ENGINE_NAME: ${{ secrets.DRIVERS_TESTS_FIREBOLT_CUBEJS_FIREBOLT_ENGINE_NAME }} @@ -613,7 +612,6 @@ jobs: timeout-minutes: 30 env: CUBEJS_TESSERACT_SQL_PLANNER: ${{ matrix.use_tesseract_sql_planner }} - CUBEJS_TESSERACT_PRE_AGGREGATIONS: ${{ matrix.use_tesseract_sql_planner }} run: ./.github/actions/smoke.sh docker-image-latest-set-tag: diff --git a/CLAUDE.md b/CLAUDE.md index db985ff947ba3..d390d624cce7e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -87,7 +87,7 @@ yarn dev # Start the Mintlify dev server 3. **API Gateway**: Provides REST, GraphQL, and SQL APIs 4. **CubeSQL**: Postgres-compatible SQL interface (Rust) 5. **CubeStore**: Distributed OLAP storage engine (Rust) -6. **Tesseract**: Native SQL planner (Rust) located in `/rust/cube/cubesqlplanner` - enabled via `CUBESQL_SQL_PUSH_DOWN=true` environment variable +6. **Tesseract**: Native SQL planner (Rust) located in `/rust/cube/cubesqlplanner` - the default planner; set `CUBEJS_TESSERACT_SQL_PLANNER=false` to fall back to the deprecated legacy planner. Tesseract pre-aggregation planning follows this flag and cannot be toggled independently ### Package Management - Uses Yarn workspaces with Lerna for package management diff --git a/docs-mintlify/docs/data-modeling/concepts/calendar-cubes.mdx b/docs-mintlify/docs/data-modeling/concepts/calendar-cubes.mdx index a7f952f0f68fa..6752eb65647af 100644 --- a/docs-mintlify/docs/data-modeling/concepts/calendar-cubes.mdx +++ b/docs-mintlify/docs/data-modeling/concepts/calendar-cubes.mdx @@ -13,8 +13,7 @@ the default granularities of time dimensions. Calendar cubes are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`](/reference/configuration/environment-variables#cubejs_tesseract_sql_planner) environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs-mintlify/docs/data-modeling/measures.mdx b/docs-mintlify/docs/data-modeling/measures.mdx index 22a889d1d37fd..11d1b15416888 100644 --- a/docs-mintlify/docs/data-modeling/measures.mdx +++ b/docs-mintlify/docs/data-modeling/measures.mdx @@ -210,9 +210,7 @@ CTEs in the generated SQL query. Multi-stage measures are powered by Tesseract, the [next-generation data -modeling engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`][ref-tesseract-env] environment variable to -enable it. +modeling engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs-mintlify/docs/data-modeling/multi-fact-views.mdx b/docs-mintlify/docs/data-modeling/multi-fact-views.mdx index d957b1d535f27..102d5f91b1948 100644 --- a/docs-mintlify/docs/data-modeling/multi-fact-views.mdx +++ b/docs-mintlify/docs/data-modeling/multi-fact-views.mdx @@ -43,9 +43,7 @@ No fanout, no manual workarounds. Multi-fact views are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`][ref-tesseract-env] environment variable to -enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs-mintlify/docs/pre-aggregations/matching-pre-aggregations.mdx b/docs-mintlify/docs/pre-aggregations/matching-pre-aggregations.mdx index 0697c613b7466..e96b03c3b6d68 100644 --- a/docs-mintlify/docs/pre-aggregations/matching-pre-aggregations.mdx +++ b/docs-mintlify/docs/pre-aggregations/matching-pre-aggregations.mdx @@ -115,10 +115,7 @@ requiring a single pre-aggregation that covers the whole query. Matching separate pre-aggregations to multi-fact and multi-stage subqueries is -powered by Tesseract, the [next-generation data modeling engine][link-tesseract]. -Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`][ref-tesseract-env] environment variable to -enable it. +powered by Tesseract, the [next-generation data modeling engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs-mintlify/recipes/data-modeling/period-over-period.mdx b/docs-mintlify/recipes/data-modeling/period-over-period.mdx index e0052ae572217..dec13d92e64fa 100644 --- a/docs-mintlify/recipes/data-modeling/period-over-period.mdx +++ b/docs-mintlify/recipes/data-modeling/period-over-period.mdx @@ -22,8 +22,7 @@ these measures and uses them in a calculation, e.g., divides or subtracts them. Multi-stage calculations are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`](/reference/configuration/environment-variables#cubejs_tesseract_sql_planner) environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs-mintlify/recipes/data-modeling/share-of-total.mdx b/docs-mintlify/recipes/data-modeling/share-of-total.mdx index 5b84327ba9a0f..a2cc3a8ed5029 100644 --- a/docs-mintlify/recipes/data-modeling/share-of-total.mdx +++ b/docs-mintlify/recipes/data-modeling/share-of-total.mdx @@ -66,9 +66,7 @@ back and groups by the query's dimensions as usual. Multi-stage calculations are powered by Tesseract, the [next-generation data -modeling engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`](/reference/configuration/environment-variables#cubejs_tesseract_sql_planner) -environment variable to enable it. +modeling engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs-mintlify/recipes/data-modeling/xirr.mdx b/docs-mintlify/recipes/data-modeling/xirr.mdx index e2da7ca1a89ae..9b5f2f5eeb965 100644 --- a/docs-mintlify/recipes/data-modeling/xirr.mdx +++ b/docs-mintlify/recipes/data-modeling/xirr.mdx @@ -29,8 +29,7 @@ Consequently, queries that don't hit pre-aggregations would fail with the follow Multi-stage calculations are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`](/reference/configuration/environment-variables#cubejs_tesseract_sql_planner) environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs-mintlify/reference/configuration/environment-variables.mdx b/docs-mintlify/reference/configuration/environment-variables.mdx index 34dcfdff490f7..fc6914f04a9e2 100644 --- a/docs-mintlify/reference/configuration/environment-variables.mdx +++ b/docs-mintlify/reference/configuration/environment-variables.mdx @@ -1667,18 +1667,18 @@ If `true`, then use WebSocket for data fetching. ## `CUBEJS_TESSERACT_SQL_PLANNER` -If `true`, enables Tesseract, the [next-generation data modeling engine][link-tesseract]. -Tesseract powers [multi-stage calculations][ref-multi-stage-calculations]. +Enables Tesseract, the [next-generation data modeling engine][link-tesseract], +which is the default SQL planner and powers +[multi-stage calculations][ref-multi-stage-calculations]. In versions before v1.7.0, +Tesseract was not enabled by default. Set to `false` to fall back to the legacy +planner, which is deprecated and will be removed in the near future. | Possible Values | Default in Development | Default in Production | | --------------- | ---------------------- | --------------------- | -| `true`, `false` | `false` | `false` | - - - -Tesseract is currently in preview. +| `true`, `false` | `true` | `true` | - +Tesseract-based pre-aggregation matching and planning follows this flag and cannot be +toggled independently. ## `CUBESTORE_AWS_ACCESS_KEY_ID` diff --git a/docs-mintlify/reference/data-modeling/dimensions.mdx b/docs-mintlify/reference/data-modeling/dimensions.mdx index 6d18691e1bc61..bcbc4de73fcd0 100644 --- a/docs-mintlify/reference/data-modeling/dimensions.mdx +++ b/docs-mintlify/reference/data-modeling/dimensions.mdx @@ -930,8 +930,7 @@ a dimension. A dimension can only have one type. `switch` dimensions are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`](/reference/configuration/environment-variables#cubejs_tesseract_sql_planner) environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs-mintlify/reference/data-modeling/measures.mdx b/docs-mintlify/reference/data-modeling/measures.mdx index 80fb96c84da3c..3c5da051b5e57 100644 --- a/docs-mintlify/reference/data-modeling/measures.mdx +++ b/docs-mintlify/reference/data-modeling/measures.mdx @@ -380,8 +380,7 @@ a measure. A measure can only have one type. The `number_agg` type is only available in Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`](/reference/configuration/environment-variables#cubejs_tesseract_sql_planner) environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. @@ -462,9 +461,7 @@ with a provided date range. It is used to calculate the minimum and maximum valu for the series of time windows. With Tesseract, the [next-generation data modeling engine][link-tesseract], -rolling window calculations don't require the date range for the time dimension. -Tesseract is currently in preview. Use the [`CUBEJS_TESSERACT_SQL_PLANNER`](/reference/configuration/environment-variables#cubejs_tesseract_sql_planner) -environment variable to enable it. +rolling window calculations don't require the date range for the time dimension. In versions before v1.7.0, Tesseract was not enabled by default. @@ -1186,8 +1183,7 @@ calculated based on the value of a [`switch` dimension][ref-switch-dimensions]. `case` measures are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -[`CUBEJS_TESSERACT_SQL_PLANNER`](/reference/configuration/environment-variables#cubejs_tesseract_sql_planner) environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs/content/product/configuration/reference/environment-variables.mdx b/docs/content/product/configuration/reference/environment-variables.mdx index a11baf8c47e3d..59fb380794456 100644 --- a/docs/content/product/configuration/reference/environment-variables.mdx +++ b/docs/content/product/configuration/reference/environment-variables.mdx @@ -1474,18 +1474,18 @@ If `true`, then use WebSocket for data fetching. ## `CUBEJS_TESSERACT_SQL_PLANNER` -If `true`, enables Tesseract, the [next-generation data modeling engine][link-tesseract]. -Tesseract powers [multi-stage calculations][ref-multi-stage-calculations]. +Enables Tesseract, the [next-generation data modeling engine][link-tesseract], +which is the default SQL planner and powers +[multi-stage calculations][ref-multi-stage-calculations]. In versions before v1.7.0, +Tesseract was not enabled by default. Set to `false` to fall back to the legacy +planner, which is deprecated and will be removed in the near future. | Possible Values | Default in Development | Default in Production | | --------------- | ---------------------- | --------------------- | -| `true`, `false` | `false` | `false` | - - - -Tesseract is currently in preview. +| `true`, `false` | `true` | `true` | - +Tesseract-based pre-aggregation matching and planning follows this flag and cannot be +toggled independently. ## `CUBESTORE_AWS_ACCESS_KEY_ID` diff --git a/docs/content/product/data-modeling/concepts/calendar-cubes.mdx b/docs/content/product/data-modeling/concepts/calendar-cubes.mdx index 22ee578c23514..7e666baf8a966 100644 --- a/docs/content/product/data-modeling/concepts/calendar-cubes.mdx +++ b/docs/content/product/data-modeling/concepts/calendar-cubes.mdx @@ -10,8 +10,7 @@ the default granularities of time dimensions. Calendar cubes are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -CUBEJS_TESSERACT_SQL_PLANNER environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs/content/product/data-modeling/concepts/multi-fact-queries.mdx b/docs/content/product/data-modeling/concepts/multi-fact-queries.mdx index 5c4df921fd423..d946ecdcc2842 100644 --- a/docs/content/product/data-modeling/concepts/multi-fact-queries.mdx +++ b/docs/content/product/data-modeling/concepts/multi-fact-queries.mdx @@ -9,8 +9,7 @@ common dimensions. Multi-fact queries are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -CUBEJS_TESSERACT_SQL_PLANNER environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs/content/product/data-modeling/concepts/multi-stage-calculations.mdx b/docs/content/product/data-modeling/concepts/multi-stage-calculations.mdx index 8aad5d477ebeb..d444ee230e655 100644 --- a/docs/content/product/data-modeling/concepts/multi-stage-calculations.mdx +++ b/docs/content/product/data-modeling/concepts/multi-stage-calculations.mdx @@ -11,8 +11,7 @@ aggregated data. Each stage results in one or more [common table expressions][li Multi-stage calculations are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -CUBEJS_TESSERACT_SQL_PLANNER environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs/content/product/data-modeling/recipes/period-over-period.mdx b/docs/content/product/data-modeling/recipes/period-over-period.mdx index e872e549649a5..c325df1507ed6 100644 --- a/docs/content/product/data-modeling/recipes/period-over-period.mdx +++ b/docs/content/product/data-modeling/recipes/period-over-period.mdx @@ -19,8 +19,7 @@ these measures and uses them in a calculation, e.g., divides or subtracts them. Multi-stage calculations are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -CUBEJS_TESSERACT_SQL_PLANNER environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs/content/product/data-modeling/recipes/xirr.mdx b/docs/content/product/data-modeling/recipes/xirr.mdx index 9aff36e1bc3b5..1057142991385 100644 --- a/docs/content/product/data-modeling/recipes/xirr.mdx +++ b/docs/content/product/data-modeling/recipes/xirr.mdx @@ -25,8 +25,7 @@ Consequently, queries that don't hit pre-aggregations would fail with the follow Multi-stage calculations are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -CUBEJS_TESSERACT_SQL_PLANNER environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs/content/product/data-modeling/reference/measures.mdx b/docs/content/product/data-modeling/reference/measures.mdx index 1a2c817469e19..b32817091f36c 100644 --- a/docs/content/product/data-modeling/reference/measures.mdx +++ b/docs/content/product/data-modeling/reference/measures.mdx @@ -396,9 +396,7 @@ with a provided date range. It is used to calculate the minimum and maximum valu for the series of time windows. With Tesseract, the [next-generation data modeling engine][link-tesseract], -rolling window calculations don't require the date range for the time dimension. -Tesseract is currently in preview. Use the CUBEJS_TESSERACT_SQL_PLANNER -environment variable to enable it. +rolling window calculations don't require the date range for the time dimension. In versions before v1.7.0, Tesseract was not enabled by default. @@ -1056,8 +1054,7 @@ calculated based on the value of a [`switch` dimension][ref-switch-dimensions]. `case` measures are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -CUBEJS_TESSERACT_SQL_PLANNER environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/docs/content/product/data-modeling/reference/types-and-formats.mdx b/docs/content/product/data-modeling/reference/types-and-formats.mdx index e6011881eb927..f7ba64198d789 100644 --- a/docs/content/product/data-modeling/reference/types-and-formats.mdx +++ b/docs/content/product/data-modeling/reference/types-and-formats.mdx @@ -209,8 +209,7 @@ in the `sql` parameter that isn't covered by standard measure types like `sum`, The `number_agg` type is only available in Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -CUBEJS_TESSERACT_SQL_PLANNER environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. @@ -881,8 +880,7 @@ particularly useful for defining [`case` measures][ref-case-measures]. `switch` dimensions are powered by Tesseract, the [next-generation data modeling -engine][link-tesseract]. Tesseract is currently in preview. Use the -CUBEJS_TESSERACT_SQL_PLANNER environment variable to enable it. +engine][link-tesseract]. In versions before v1.7.0, it was not enabled by default. diff --git a/packages/cubejs-backend-shared/src/env.ts b/packages/cubejs-backend-shared/src/env.ts index b35c19fd04b5d..ad63f10ba1cac 100644 --- a/packages/cubejs-backend-shared/src/env.ts +++ b/packages/cubejs-backend-shared/src/env.ts @@ -1,6 +1,6 @@ /* eslint-disable no-restricted-syntax */ import { get } from 'env-var'; -import { displayCLIWarning } from './cli'; +import { displayCLIWarning, displayCLIWarningOnce } from './cli'; import { isNativeSupported } from './platform'; export class InvalidConfiguration extends Error { @@ -299,8 +299,19 @@ const variables: Record any> = { scheduledRefreshBatchSize: () => get('CUBEJS_SCHEDULED_REFRESH_BATCH_SIZE') .default('1') .asInt(), - nativeSqlPlanner: () => get('CUBEJS_TESSERACT_SQL_PLANNER').default('false').asBool(), - nativeSqlPlannerPreAggregations: () => get('CUBEJS_TESSERACT_PRE_AGGREGATIONS').default('false').asBool(), + nativeSqlPlanner: () => { + const explicitlySet = process.env.CUBEJS_TESSERACT_SQL_PLANNER !== undefined; + const enabled = get('CUBEJS_TESSERACT_SQL_PLANNER').default('true').asBool(); + + if (explicitlySet && !enabled) { + displayCLIWarningOnce( + 'CUBEJS_TESSERACT_SQL_PLANNER', + 'Tesseract planner is a default one, but you are trying to use a legacy planner which will be removed in the near future.' + ); + } + + return enabled; + }, transpilationWorkerThreads: () => { const enabled = get('CUBEJS_TRANSPILATION_WORKER_THREADS') .default('true') diff --git a/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js b/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js index 652370d368476..7f97165002ea6 100644 --- a/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js +++ b/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js @@ -345,12 +345,10 @@ export class BaseQuery { */ this.customSubQueryJoins = this.options.subqueryJoins ?? []; this.useNativeSqlPlanner = this.options.useNativeSqlPlanner ?? getEnv('nativeSqlPlanner'); - this.canUseNativeSqlPlannerPreAggregation = getEnv('nativeSqlPlannerPreAggregations'); - if (this.useNativeSqlPlanner && !this.canUseNativeSqlPlannerPreAggregation && !this.neverUseSqlPlannerPreaggregation()) { - const fullAggregateMeasures = this.fullKeyQueryAggregateMeasures({ hasMultipliedForPreAggregation: true }); - - this.canUseNativeSqlPlannerPreAggregation = fullAggregateMeasures.multiStageMembers.length > 0; - } + // Tesseract pre-aggregation planning always follows the SQL planner and can't be + // toggled independently. The neverUseSqlPlannerPreaggregation() guard still opts + // specific query types (e.g. CubeStoreQuery) out for correctness. + this.canUseNativeSqlPlannerPreAggregation = this.useNativeSqlPlanner && !this.neverUseSqlPlannerPreaggregation(); this.queryLevelJoinHints = this.options.joinHints ?? []; this.prebuildJoin(); diff --git a/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations-string-measure.test.ts b/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations-string-measure.test.ts index 4d60a6222e35f..c26f9f6d7b20c 100644 --- a/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations-string-measure.test.ts +++ b/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations-string-measure.test.ts @@ -102,7 +102,7 @@ describe('PreAggregations string type measure', () => { }); }); - if (getEnv('nativeSqlPlanner') && getEnv('nativeSqlPlannerPreAggregations')) { + if (getEnv('nativeSqlPlanner')) { it('string type measure with pre-aggregation', async () => { await compiler.compile(); diff --git a/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations.test.ts b/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations.test.ts index b06a635c87e57..ef11ceba0a2e8 100644 --- a/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations.test.ts +++ b/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations.test.ts @@ -3013,7 +3013,7 @@ describe('PreAggregations', () => { }); }); - if (getEnv('nativeSqlPlanner') && getEnv('nativeSqlPlannerPreAggregations')) { + if (getEnv('nativeSqlPlanner')) { it('rollup lambda', async () => { await compiler.compile(); diff --git a/packages/cubejs-schema-compiler/test/unit/base-query.test.ts b/packages/cubejs-schema-compiler/test/unit/base-query.test.ts index f1a98c6a5c0c6..63a9f0bd91735 100644 --- a/packages/cubejs-schema-compiler/test/unit/base-query.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/base-query.test.ts @@ -52,10 +52,8 @@ describe('SQL Generation', () => { filters: [], }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' count("cards".id) "cards__count"\n' + - ' FROM\n' + - ' card_tbl AS "cards" '; + const expected = 'SELECT count("cards".id) "cards__count" \n' + + 'FROM card_tbl AS "cards"'; expect(queryAndParams[0]).toContain('card_tbl'); expect(queryAndParams[0]).toEqual(expected); }); @@ -71,10 +69,8 @@ describe('SQL Generation', () => { filters: [], }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' sum("cards".amount) "cards__sum"\n' + - ' FROM\n' + - ' card_tbl AS "cards" '; + const expected = 'SELECT sum("cards".amount) "cards__sum" \n' + + 'FROM card_tbl AS "cards"'; expect(queryAndParams[0]).toContain('card_tbl'); expect(queryAndParams[0]).toEqual(expected); }); @@ -93,10 +89,10 @@ describe('SQL Generation', () => { filters: [], }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' "cards".type "cards__type", count("cards".id) "cards__count"\n' + - ' FROM\n' + - ' card_tbl AS "cards" GROUP BY 1 ORDER BY 2 DESC'; + const expected = 'SELECT "cards".type "cards__type", count("cards".id) "cards__count" \n' + + 'FROM card_tbl AS "cards"\n' + + 'GROUP BY 1\n' + + 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); }); it('Simple query - time dimension', async () => { @@ -124,7 +120,7 @@ describe('SQL Generation', () => { expect(queryAndParams[0]).toContain('"cards".type "cards__type", date_trunc(\'day\', ("cards".created_at::timestamptz AT TIME ZONE \'America/Los_Angeles\')) "cards__created_at_day"'); expect(queryAndParams[0]).toContain('GROUP BY 1, 2'); - expect(queryAndParams[0]).toContain('ORDER BY 2'); + expect(queryAndParams[0]).toContain('ORDER BY 2'); }); it('Simple query - complex measure', async () => { await compilers.compiler.compile(); @@ -137,10 +133,8 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' max("cards".amount) - min("cards".amount) "cards__diff"\n' + - ' FROM\n' + - ' card_tbl AS "cards" '; + const expected = 'SELECT max("cards".amount) - min("cards".amount) "cards__diff" \n' + + 'FROM card_tbl AS "cards"'; expect(queryAndParams[0]).toEqual(expected); }); it('Simple query - complex dimension', async () => { @@ -157,10 +151,10 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' CONCAT("cards".type, \' \', "cards".location) "cards__type_complex", max("cards".amount) - min("cards".amount) "cards__diff"\n' + - ' FROM\n' + - ' card_tbl AS "cards" GROUP BY 1 ORDER BY 2 DESC'; + const expected = 'SELECT CONCAT("cards".type, \' \', "cards".location) "cards__type_complex", max("cards".amount) - min("cards".amount) "cards__diff" \n' + + 'FROM card_tbl AS "cards"\n' + + 'GROUP BY 1\n' + + 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); }); it('Simple query - CUBE dimension', async () => { @@ -177,10 +171,10 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' "cards".type "cards__type_with_cube", max("cards".amount) - min("cards".amount) "cards__diff"\n' + - ' FROM\n' + - ' card_tbl AS "cards" GROUP BY 1 ORDER BY 2 DESC'; + const expected = 'SELECT "cards".type "cards__type_with_cube", max("cards".amount) - min("cards".amount) "cards__diff" \n' + + 'FROM card_tbl AS "cards"\n' + + 'GROUP BY 1\n' + + 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); }); it('Simple query - CUBE id', async () => { @@ -197,10 +191,10 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' "cards".id "cards__id_cube", max("cards".amount) - min("cards".amount) "cards__diff"\n' + - ' FROM\n' + - ' card_tbl AS "cards" GROUP BY 1 ORDER BY 2 DESC'; + const expected = 'SELECT "cards".id "cards__id_cube", max("cards".amount) - min("cards".amount) "cards__diff" \n' + + 'FROM card_tbl AS "cards"\n' + + 'GROUP BY 1\n' + + 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); }); it('Simple query - simple filter', async () => { @@ -238,10 +232,11 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' "cards".type "cards__type", count("cards".id) "cards__count"\n' + - ' FROM\n' + - ' card_tbl AS "cards" WHERE (("cards".type = $1) OR ("cards".type <> $2 OR "cards".type IS NULL)) AND ("cards".type = $3) GROUP BY 1 ORDER BY 2 DESC'; + const expected = 'SELECT "cards".type "cards__type", count("cards".id) "cards__count" \n' + + 'FROM card_tbl AS "cards"\n' + + 'WHERE (("cards".type = $1) OR ("cards".type <> $2 OR "cards".type IS NULL)) AND ("cards".type = $3)\n' + + 'GROUP BY 1\n' + + 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); const expectedParams = ['type_value', 'not_type_value', 'type_value']; expect(queryAndParams[1]).toEqual(expectedParams); @@ -309,10 +304,11 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' "cards".type "cards__type", count("cards".id) "cards__count"\n' + - ' FROM\n' + - ' card_tbl AS "cards" WHERE (("cards".type IS NULL) OR ("cards".type IS NOT NULL)) AND (("cards".type IN ($1, $2)) OR ("cards".type NOT IN ($3, $4) OR "cards".type IS NULL)) AND (("cards".type IN ($5, $6) OR "cards".type IS NULL) OR ("cards".type NOT IN ($7, $8))) GROUP BY 1 ORDER BY 2 DESC'; + const expected = 'SELECT "cards".type "cards__type", count("cards".id) "cards__count" \n' + + 'FROM card_tbl AS "cards"\n' + + 'WHERE (("cards".type IS NULL) OR ("cards".type IS NOT NULL)) AND (("cards".type IN ($1, $2)) OR ("cards".type NOT IN ($3, $4) OR "cards".type IS NULL)) AND (("cards".type IN ($5, $6) OR "cards".type IS NULL) OR ("cards".type NOT IN ($7, $8)))\n' + + 'GROUP BY 1\n' + + 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); // let expectedParams = [ 'type_value', 'not_type_value', 'type_value' ]; // expect(queryAndParams[1]).toEqual(expectedParams); @@ -353,10 +349,12 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); - const expected = 'SELECT\n' + - ' "cards".type "cards__type", count("cards".id) "cards__count"\n' + - ' FROM\n' + - ' card_tbl AS "cards" WHERE (("cards".type = $1) OR ("cards".type <> $2 OR "cards".type IS NULL)) GROUP BY 1 HAVING (count("cards".id) = $3) ORDER BY 2 DESC'; + const expected = 'SELECT "cards".type "cards__type", count("cards".id) "cards__count" \n' + + 'FROM card_tbl AS "cards"\n' + + 'WHERE (("cards".type = $1) OR ("cards".type <> $2 OR "cards".type IS NULL))\n' + + 'GROUP BY 1\n' + + 'HAVING (count("cards".id) = $3)\n' + + 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); const expectedParams = ['type_value', 'not_type_value', '3']; expect(queryAndParams[1]).toEqual(expectedParams); @@ -390,7 +388,7 @@ describe('SQL Generation', () => { }); let queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0].includes('ORDER BY 1')).toBeTruthy(); + expect(queryAndParams[0].includes('ORDER BY 1')).toBeTruthy(); // The order of time dimensions should have no effect on the `ORDER BY` clause @@ -415,7 +413,7 @@ describe('SQL Generation', () => { }); queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0].includes('ORDER BY 1')).toBeTruthy(); + expect(queryAndParams[0].includes('ORDER BY 1')).toBeTruthy(); }); }); @@ -976,8 +974,8 @@ describe('SQL Generation', () => { const queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0]).toContain('LEFT JOIN card2_tbl AS "cards_b" ON "cards_a".other_id = "cards_b".id'); - expect(queryAndParams[0]).toContain('LEFT JOIN card3_tbl AS "cards_c" ON "cards_b".other_id = "cards_c".id'); + expect(queryAndParams[0]).toContain('LEFT JOIN card2_tbl AS "cards_b" ON "cards_a".other_id = "cards_b".id'); + expect(queryAndParams[0]).toContain('LEFT JOIN card3_tbl AS "cards_c" ON "cards_b".other_id = "cards_c".id'); }); it('multiplied join', async () => { @@ -996,8 +994,8 @@ describe('SQL Generation', () => { const _queryAndParams = query.buildSqlAndParams(); - /* expect(queryAndParams[0]).toContain('LEFT JOIN card2_tbl AS "cards_b" ON "cards_a".other_id = "cards_b".id'); - expect(queryAndParams[0]).toContain('LEFT JOIN card3_tbl AS "cards_c" ON "cards_b".other_id = "cards_c".id'); */ + /* expect(queryAndParams[0]).toContain('LEFT JOIN card2_tbl AS "cards_b" ON "cards_a".other_id = "cards_b".id'); + expect(queryAndParams[0]).toContain('LEFT JOIN card3_tbl AS "cards_c" ON "cards_b".other_id = "cards_c".id'); */ }); it('join hint cache', async () => { @@ -1031,7 +1029,7 @@ describe('SQL Generation', () => { ], }); const queryAndParamsWithJoin = queryWithJoin.buildSqlAndParams(); - expect(queryAndParamsWithJoin[0]).toContain('LEFT JOIN card2_tbl AS "cards_b" ON "cards_a".other_id = "cards_b".id'); + expect(queryAndParamsWithJoin[0]).toContain('LEFT JOIN card2_tbl AS "cards_b" ON "cards_a".other_id = "cards_b".id'); // Second query does not require a join and should not be impacted by the first query const queryWithoutJoin = new PostgresQuery(filterParamsCompilers, { @@ -2019,7 +2017,7 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - expect(queryString).toContain('select * from order where ((type = ?))'); + expect(queryString).toContain('select * from order where (type = ?)'); }); it('propagate filter params within cte from view into cube\'s query', async () => { @@ -2070,7 +2068,7 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - expect(/select\s+\*\s+from\s+order\s+where\s+\(\(type\s=\s\?\)\)/.test(queryString)).toBeTruthy(); + expect(/select\s+\*\s+from\s+order\s+where\s+\(type\s=\s\?\)/.test(queryString)).toBeTruthy(); }); it('correctly substitute filter params in cube\'s query dimension used in filter', async () => { @@ -2088,10 +2086,9 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - expect(queryString).toContain(`SELECT - (1 = 1) "order__proxied", count(*) "order__count" - FROM - (select * from order where (1 = 1)) AS "order" WHERE ((1 = 1) = ?)`); + expect(queryString).toContain('1 = 1 "order__proxied"'); + expect(queryString).toContain('(select * from order where 1 = 1) AS "order"'); + expect(queryString).toContain('WHERE (1 = 1 = ?)'); }); it('correctly substitute filter params in cube\'s query measure used in filter', async () => { @@ -2114,10 +2111,9 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - expect(queryString).toContain(`SELECT - "order".type "order__type", avg(CASE WHEN ((category = ?)) THEN "order".product_id END) "order__avg_filtered" - FROM - (select * from order where (type = ?)) AS "order" WHERE ("order".type = ?) AND ("order".category = ?)`); + expect(queryString).toContain('avg(CASE WHEN ((category = ?)) THEN "order".product_id END) "order__avg_filtered"'); + expect(queryString).toContain('(select * from order where (type = ?)) AS "order"'); + expect(queryString).toContain('WHERE ("order".type = ?) AND ("order".category = ?)'); }); it('view referencing cube with FILTER_PARAMS - multiple filters and complex query', async () => { @@ -2276,7 +2272,7 @@ describe('SQL Generation', () => { const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - expect(queryString).toContain('CASE WHEN (((category = $1)))'); + expect(queryString).toContain('CASE WHEN ((category = $1))'); expect(queryString).toMatch(/sum.*CASE WHEN/); expect(queryString).toContain('WHERE ("sales".category = $2)'); expect(queryAndParams[1]).toEqual(['electronics', 'electronics']); @@ -2434,7 +2430,7 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - expect(/select\s+\*\s+from\s+order\s+where\s+\(\(dim0\s=\s\$1\)\)/.test(queryString)).toBeTruthy(); + expect(/select\s+\*\s+from\s+order\s+where\s+\(dim0\s=\s\$1\)/.test(queryString)).toBeTruthy(); }); it('propagate 2 filter params from view into cube\'s query', async () => { @@ -2501,7 +2497,7 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - expect(/select\s+\*\s+from\s+order\s+where\s+\(\(dim0\s=\s\$1\)\)/.test(queryString)).toBeTruthy(); + expect(/select\s+\*\s+from\s+order\s+where\s+\(dim0\s=\s\$1\)/.test(queryString)).toBeTruthy(); }); it('propagate 2 filter params within cte from view into cube\'s query', async () => { @@ -2572,7 +2568,7 @@ describe('SQL Generation', () => { }); const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - expect(/select\s+\*\s+from\s+order\s+where\s+\(\(dim0\s=\s\$1\)\)/.test(queryString)).toBeTruthy(); + expect(/select\s+\*\s+from\s+order\s+where\s+\(dim0\s=\s\$1\)/.test(queryString)).toBeTruthy(); }); }); }); diff --git a/packages/cubejs-schema-compiler/test/unit/mssql-query.test.ts b/packages/cubejs-schema-compiler/test/unit/mssql-query.test.ts index b64153ec8b574..4d13071990f3b 100644 --- a/packages/cubejs-schema-compiler/test/unit/mssql-query.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/mssql-query.test.ts @@ -121,11 +121,9 @@ describe('MssqlQuery', () => { const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - const lastGroupByIdx = queryString.lastIndexOf('GROUP BY'); - const queryCloseIdx = queryString.indexOf(')', lastGroupByIdx + 1); - const finalGroupBy = queryString.substring(lastGroupByIdx, queryCloseIdx); - - expect(finalGroupBy).toEqual('GROUP BY "visitors.createdAt_series"."date_from"'); + // The native planner groups by the calculated-granularity expression + // directly (the legacy planner grouped by a time-series CTE alias). + expect(queryString).toContain('GROUP BY dateadd(week, DATEDIFF(week, 0, CAST("visitors".created_at AT TIME ZONE \'UTC\' AT TIME ZONE \'Pacific Standard Time\' AS DATETIME2)), 0)'); })); it('should group by both time and regular dimensions on rolling windows', @@ -154,11 +152,9 @@ describe('MssqlQuery', () => { const queryAndParams = query.buildSqlAndParams(); const queryString = queryAndParams[0]; - const lastGroupByIdx = queryString.lastIndexOf('GROUP BY'); - const queryCloseIdx = queryString.indexOf(')', lastGroupByIdx + 1); - const finalGroupBy = queryString.substring(lastGroupByIdx, queryCloseIdx); - - expect(finalGroupBy).toEqual('GROUP BY "visitors.createdAt_series"."date_from", "visitors__source"'); + // The native planner groups by the regular dimension and the + // calculated-granularity expression (legacy used a time-series CTE alias). + expect(queryString).toContain('GROUP BY "visitors".source, dateadd(week, DATEDIFF(week, 0, CAST("visitors".created_at AT TIME ZONE \'UTC\' AT TIME ZONE \'Pacific Standard Time\' AS DATETIME2)), 0)'); })); it('should not include order by clauses in subqueries', diff --git a/packages/cubejs-schema-compiler/test/unit/postgres-query.test.ts b/packages/cubejs-schema-compiler/test/unit/postgres-query.test.ts index f2a609b743781..cf59f4c39eab3 100644 --- a/packages/cubejs-schema-compiler/test/unit/postgres-query.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/postgres-query.test.ts @@ -174,8 +174,10 @@ describe('PostgresQuery', () => { timezone: 'America/Los_Angeles' }); + // The native planner orders by all granularity columns (result-equivalent + // to the legacy planner's min-granularity-only ordering). let queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0]).toContain('ORDER BY 2 ASC'); + expect(queryAndParams[0]).toContain('ORDER BY 1 ASC, 2 ASC, 3 ASC'); query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { measures: [ @@ -202,7 +204,7 @@ describe('PostgresQuery', () => { }); queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0]).toContain('ORDER BY 1 ASC'); + expect(queryAndParams[0]).toContain('ORDER BY 1 ASC, 2 ASC, 3 ASC'); query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { measures: [ @@ -225,7 +227,7 @@ describe('PostgresQuery', () => { }); queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0]).toContain('ORDER BY 2 ASC'); + expect(queryAndParams[0]).toContain('ORDER BY 1 ASC, 2 ASC'); }); it('multi granularity ordered by specified granularity', async () => { @@ -252,7 +254,7 @@ describe('PostgresQuery', () => { }); let queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0]).toContain('ORDER BY 2 ASC'); + expect(queryAndParams[0]).toMatch(/ORDER BY\s+2\s+ASC/); query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { measures: [ @@ -275,7 +277,7 @@ describe('PostgresQuery', () => { }); queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0]).toContain('ORDER BY 1 ASC'); + expect(queryAndParams[0]).toMatch(/ORDER BY\s+1\s+ASC/); query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { measures: [ @@ -298,7 +300,7 @@ describe('PostgresQuery', () => { }); queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0]).toContain('ORDER BY 2 ASC'); + expect(queryAndParams[0]).toMatch(/ORDER BY\s+2\s+ASC/); query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { measures: [ @@ -325,7 +327,7 @@ describe('PostgresQuery', () => { }); queryAndParams = query.buildSqlAndParams(); - expect(queryAndParams[0]).toContain('ORDER BY 3 ASC'); + expect(queryAndParams[0]).toMatch(/ORDER BY\s+3\s+ASC/); }); }); @@ -401,7 +403,8 @@ describe('PostgresQuery', () => { const queryAndParams = query.buildSqlAndParams(); const sql = queryAndParams[0]; - // PostgreSQL should use AS keyword for subquery aliases - expect(sql).toMatch(/\s+AS\s+q_0\s+/); + // PostgreSQL should use AS keyword for subquery aliases (the native planner + // quotes the alias, e.g. AS "q_0"). + expect(sql).toMatch(/\s+AS\s+"?q_0"?/); }); }); diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-full.test.ts.snap index fe462d4a3493a..0d1cf3665deec 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-full.test.ts.snap @@ -9264,3 +9264,813 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485000000001", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485000000001", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485000000001", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.33860000000004", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.33860000000004", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.23609999999999", + "BigECommerce.totalProfitForQuarter": "394.33860000000004", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.99699999999999", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6616999999999", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.97370000000006", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.98", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.96", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.6", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-prefix-full.test.ts.snap index 5bcf898a905b4..05b578ce6da82 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-prefix-full.test.ts.snap @@ -9264,3 +9264,813 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485000000001", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485000000001", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485000000001", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.33860000000004", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.33860000000004", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.23609999999999", + "BigECommerce.totalProfitForQuarter": "394.33860000000004", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.99699999999999", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6616999999999", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.97370000000006", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.98", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.96", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.6", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-full.test.ts.snap index 7f2ad828b11f6..b56068bc8e1a8 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-full.test.ts.snap @@ -20159,3 +20159,654 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure SQL API: Extended nested Rollup over asterisk 1`] = ` +Array [ + Object { + "SUM(a.count)": "1", + "order": "CA-2017-100811", + "row": 4012, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102379", + "row": 6272, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102554", + "row": 3448, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102925", + "row": 9473, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-105620", + "row": 8958, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-107503", + "row": 849, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-109183", + "row": 7293, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112172", + "row": 7310, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112515", + "row": 2655, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-115546", + "row": 4161, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-116127", + "row": 9584, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-118437", + "row": 1013, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-119284", + "row": 8697, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-120327", + "row": 4227, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123001", + "row": 3934, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123372", + "row": 2661, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-124296", + "row": 4031, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-126928", + "row": 8878, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3060, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3059, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-133648", + "row": 1995, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-134915", + "row": 2952, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-135069", + "row": 7425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-138422", + "row": 2329, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-139661", + "row": 1494, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-140949", + "row": 2455, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-143567", + "row": 4882, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-144568", + "row": 3717, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145142", + "row": 523, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145653", + "row": 5220, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145660", + "row": 6205, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145772", + "row": 6125, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-147333", + "row": 5277, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-149048", + "row": 2595, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-150091", + "row": 8425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-151799", + "row": 7698, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9619, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9618, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-163265", + "row": 8673, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-119319", + "row": 8621, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-124779", + "row": 6651, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-132297", + "row": 3083, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-133361", + "row": 6459, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-141677", + "row": 7174, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02", + "RetailCalendar.retail_date.year": "2020-02-02", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying BigECommerce: rolling window YTD without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "5", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "6", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "11", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "24", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "28", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "37", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "44", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying BigECommerce: rolling window by 2 day without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": "1", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying BigECommerce: rolling window by 2 month without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "12", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "7", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "10", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "13", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "16", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 210.98, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 48.896, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 18.368, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 2399.96, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 71.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 1265.88, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 293.376, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 110.208, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 14399.76, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 429.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 421.96, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 97.792, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 36.736, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 4799.92, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 143.2, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure querying custom granularities ECommerce: count by two_mo_by_feb + no dimension + rollingCountByLeading without date range 1`] = ` +Array [ + Object { + "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "8", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "12", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "6", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "19", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "16", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-prefix-full.test.ts.snap index 276c6d9807866..2434064c5cb47 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-prefix-full.test.ts.snap @@ -19964,3 +19964,654 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix SQL API: Extended nested Rollup over asterisk 1`] = ` +Array [ + Object { + "SUM(a.count)": "1", + "order": "CA-2017-100811", + "row": 4012, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102379", + "row": 6272, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102554", + "row": 3448, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102925", + "row": 9473, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-105620", + "row": 8958, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-107503", + "row": 849, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-109183", + "row": 7293, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112172", + "row": 7310, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112515", + "row": 2655, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-115546", + "row": 4161, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-116127", + "row": 9584, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-118437", + "row": 1013, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-119284", + "row": 8697, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-120327", + "row": 4227, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123001", + "row": 3934, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123372", + "row": 2661, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-124296", + "row": 4031, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-126928", + "row": 8878, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3060, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3059, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-133648", + "row": 1995, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-134915", + "row": 2952, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-135069", + "row": 7425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-138422", + "row": 2329, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-139661", + "row": 1494, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-140949", + "row": 2455, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-143567", + "row": 4882, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-144568", + "row": 3717, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145142", + "row": 523, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145653", + "row": 5220, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145660", + "row": 6205, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145772", + "row": 6125, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-147333", + "row": 5277, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-149048", + "row": 2595, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-150091", + "row": 8425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-151799", + "row": 7698, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9619, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9618, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-163265", + "row": 8673, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-119319", + "row": 8621, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-124779", + "row": 6651, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-132297", + "row": 3083, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-133361", + "row": 6459, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-141677", + "row": 7174, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02", + "RetailCalendar.retail_date.year": "2020-02-02", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying BigECommerce: rolling window YTD without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "5", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "6", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "11", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "24", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "28", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "37", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "44", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying BigECommerce: rolling window by 2 day without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": "1", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying BigECommerce: rolling window by 2 month without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "12", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "7", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "10", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "13", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "16", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 210.98, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 48.896, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 18.368, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 2399.96, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 71.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 1265.88, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 293.376, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 110.208, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 14399.76, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 429.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 421.96, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 97.792, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 36.736, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 4799.92, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 143.2, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-azure-prefix querying custom granularities ECommerce: count by two_mo_by_feb + no dimension + rollingCountByLeading without date range 1`] = ` +Array [ + Object { + "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "8", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "12", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "6", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "19", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "16", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-full.test.ts.snap index 227d9bd339135..a91e559ae578f 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-full.test.ts.snap @@ -20159,3 +20159,654 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs SQL API: Extended nested Rollup over asterisk 1`] = ` +Array [ + Object { + "SUM(a.count)": "1", + "order": "CA-2017-100811", + "row": 4012, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102379", + "row": 6272, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102554", + "row": 3448, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102925", + "row": 9473, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-105620", + "row": 8958, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-107503", + "row": 849, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-109183", + "row": 7293, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112172", + "row": 7310, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112515", + "row": 2655, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-115546", + "row": 4161, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-116127", + "row": 9584, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-118437", + "row": 1013, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-119284", + "row": 8697, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-120327", + "row": 4227, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123001", + "row": 3934, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123372", + "row": 2661, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-124296", + "row": 4031, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-126928", + "row": 8878, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3060, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3059, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-133648", + "row": 1995, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-134915", + "row": 2952, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-135069", + "row": 7425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-138422", + "row": 2329, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-139661", + "row": 1494, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-140949", + "row": 2455, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-143567", + "row": 4882, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-144568", + "row": 3717, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145142", + "row": 523, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145653", + "row": 5220, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145660", + "row": 6205, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145772", + "row": 6125, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-147333", + "row": 5277, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-149048", + "row": 2595, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-150091", + "row": 8425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-151799", + "row": 7698, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9619, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9618, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-163265", + "row": 8673, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-119319", + "row": 8621, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-124779", + "row": 6651, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-132297", + "row": 3083, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-133361", + "row": 6459, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-141677", + "row": 7174, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02", + "RetailCalendar.retail_date.year": "2020-02-02", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying BigECommerce: rolling window YTD without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "5", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "6", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "11", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "24", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "28", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "37", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "44", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying BigECommerce: rolling window by 2 day without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": "1", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying BigECommerce: rolling window by 2 month without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "12", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "7", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "10", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "13", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "16", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 210.98, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 48.896, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 18.368, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 2399.96, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 71.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 1265.88, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 293.376, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 110.208, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 14399.76, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 429.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 421.96, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 97.792, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 36.736, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 4799.92, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 143.2, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs querying custom granularities ECommerce: count by two_mo_by_feb + no dimension + rollingCountByLeading without date range 1`] = ` +Array [ + Object { + "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "8", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "12", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "6", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "19", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "16", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-prefix-full.test.ts.snap index ca2a5be6e661e..032d39d87e6a6 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-prefix-full.test.ts.snap @@ -19964,3 +19964,654 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix SQL API: Extended nested Rollup over asterisk 1`] = ` +Array [ + Object { + "SUM(a.count)": "1", + "order": "CA-2017-100811", + "row": 4012, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102379", + "row": 6272, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102554", + "row": 3448, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102925", + "row": 9473, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-105620", + "row": 8958, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-107503", + "row": 849, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-109183", + "row": 7293, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112172", + "row": 7310, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112515", + "row": 2655, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-115546", + "row": 4161, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-116127", + "row": 9584, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-118437", + "row": 1013, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-119284", + "row": 8697, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-120327", + "row": 4227, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123001", + "row": 3934, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123372", + "row": 2661, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-124296", + "row": 4031, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-126928", + "row": 8878, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3060, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3059, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-133648", + "row": 1995, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-134915", + "row": 2952, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-135069", + "row": 7425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-138422", + "row": 2329, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-139661", + "row": 1494, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-140949", + "row": 2455, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-143567", + "row": 4882, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-144568", + "row": 3717, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145142", + "row": 523, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145653", + "row": 5220, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145660", + "row": 6205, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145772", + "row": 6125, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-147333", + "row": 5277, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-149048", + "row": 2595, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-150091", + "row": 8425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-151799", + "row": 7698, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9619, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9618, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-163265", + "row": 8673, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-119319", + "row": 8621, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-124779", + "row": 6651, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-132297", + "row": 3083, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-133361", + "row": 6459, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-141677", + "row": 7174, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02", + "RetailCalendar.retail_date.year": "2020-02-02", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying BigECommerce: rolling window YTD without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "5", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "6", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "11", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "24", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "28", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "37", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "44", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying BigECommerce: rolling window by 2 day without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": "1", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying BigECommerce: rolling window by 2 month without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "12", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "7", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "10", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "13", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "16", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 210.98, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 48.896, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 18.368, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 2399.96, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 71.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 1265.88, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 293.376, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 110.208, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 14399.76, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 429.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 421.96, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 97.792, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 36.736, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 4799.92, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 143.2, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-gcs-prefix querying custom granularities ECommerce: count by two_mo_by_feb + no dimension + rollingCountByLeading without date range 1`] = ` +Array [ + Object { + "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "8", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "12", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "6", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "19", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "16", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-full.test.ts.snap index 4162b23385136..c439f8576f130 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-full.test.ts.snap @@ -20159,3 +20159,654 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 SQL API: Extended nested Rollup over asterisk 1`] = ` +Array [ + Object { + "SUM(a.count)": "1", + "order": "CA-2017-100811", + "row": 4012, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102379", + "row": 6272, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102554", + "row": 3448, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102925", + "row": 9473, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-105620", + "row": 8958, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-107503", + "row": 849, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-109183", + "row": 7293, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112172", + "row": 7310, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112515", + "row": 2655, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-115546", + "row": 4161, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-116127", + "row": 9584, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-118437", + "row": 1013, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-119284", + "row": 8697, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-120327", + "row": 4227, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123001", + "row": 3934, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123372", + "row": 2661, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-124296", + "row": 4031, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-126928", + "row": 8878, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3060, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3059, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-133648", + "row": 1995, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-134915", + "row": 2952, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-135069", + "row": 7425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-138422", + "row": 2329, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-139661", + "row": 1494, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-140949", + "row": 2455, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-143567", + "row": 4882, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-144568", + "row": 3717, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145142", + "row": 523, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145653", + "row": 5220, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145660", + "row": 6205, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145772", + "row": 6125, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-147333", + "row": 5277, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-149048", + "row": 2595, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-150091", + "row": 8425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-151799", + "row": 7698, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9619, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9618, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-163265", + "row": 8673, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-119319", + "row": 8621, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-124779", + "row": 6651, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-132297", + "row": 3083, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-133361", + "row": 6459, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-141677", + "row": 7174, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02", + "RetailCalendar.retail_date.year": "2020-02-02", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying BigECommerce: rolling window YTD without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "5", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "6", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "11", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "24", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "28", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "37", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "44", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying BigECommerce: rolling window by 2 day without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": "1", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying BigECommerce: rolling window by 2 month without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "12", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "7", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "10", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "13", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "16", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 210.98, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 48.896, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 18.368, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 2399.96, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 71.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 1265.88, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 293.376, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 110.208, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 14399.76, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 429.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 421.96, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 97.792, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 36.736, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 4799.92, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 143.2, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3 querying custom granularities ECommerce: count by two_mo_by_feb + no dimension + rollingCountByLeading without date range 1`] = ` +Array [ + Object { + "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "8", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "12", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "6", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "19", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "16", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-prefix-full.test.ts.snap index 20611aed023b2..105570640bf3f 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-prefix-full.test.ts.snap @@ -19964,3 +19964,654 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix SQL API: Extended nested Rollup over asterisk 1`] = ` +Array [ + Object { + "SUM(a.count)": "1", + "order": "CA-2017-100811", + "row": 4012, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102379", + "row": 6272, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102554", + "row": 3448, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-102925", + "row": 9473, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-105620", + "row": 8958, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-107503", + "row": 849, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-109183", + "row": 7293, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112172", + "row": 7310, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-112515", + "row": 2655, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-115546", + "row": 4161, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-116127", + "row": 9584, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-118437", + "row": 1013, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-119284", + "row": 8697, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-120327", + "row": 4227, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123001", + "row": 3934, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-123372", + "row": 2661, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-124296", + "row": 4031, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-126928", + "row": 8878, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3060, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-131492", + "row": 3059, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-133648", + "row": 1995, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-134915", + "row": 2952, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-135069", + "row": 7425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-138422", + "row": 2329, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-139661", + "row": 1494, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-140949", + "row": 2455, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-143567", + "row": 4882, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-144568", + "row": 3717, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145142", + "row": 523, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145653", + "row": 5220, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145660", + "row": 6205, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-145772", + "row": 6125, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-147333", + "row": 5277, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-149048", + "row": 2595, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-150091", + "row": 8425, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-151799", + "row": 7698, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9619, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-160633", + "row": 9618, + }, + Object { + "SUM(a.count)": "1", + "order": "CA-2017-163265", + "row": 8673, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-119319", + "row": 8621, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-124779", + "row": 6651, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-132297", + "row": 3083, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-133361", + "row": 6459, + }, + Object { + "SUM(a.count)": "1", + "order": "US-2017-141677", + "row": 7174, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02", + "RetailCalendar.retail_date.year": "2020-02-02", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying BigECommerce: rolling window YTD without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "5", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "6", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "11", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "24", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "28", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "37", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "44", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying BigECommerce: rolling window by 2 day without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": "1", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying BigECommerce: rolling window by 2 month without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "12", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "7", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "10", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "13", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "16", + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 210.98, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 48.896, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 18.368, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 2399.96, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 71.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 1265.88, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": 293.376, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": 110.208, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 14399.76, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": 429.6, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 421.96, + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 97.792, + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 36.736, + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 4799.92, + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": 143.2, + }, +] +`; + +exports[`Queries with the @cubejs-backend/databricks-jdbc-driver export-bucket-s3-prefix querying custom granularities ECommerce: count by two_mo_by_feb + no dimension + rollingCountByLeading without date range 1`] = ` +Array [ + Object { + "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "8", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "12", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "6", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "19", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "16", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap index 1a871d0e37c6e..7c49cbcc63e83 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap @@ -22145,3 +22145,1088 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying BigECommerce: base measure plus multi-stage over non-partitioned pre-aggregation 1`] = ` +Array [ + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Canon PC1080F Personal Copier", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "1037.9827", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Logitech di_Novo Edge Keyboard", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "517.4793", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Google Nexus 5", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "494.9725", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "218.4", + }, + Object { + "BigECommerce.category": "Furniture", + "BigECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", + "BigECommerce.profitInCategory": "459.7526", + "BigECommerce.totalProfit": "206.8704", + }, + Object { + "BigECommerce.category": "Furniture", + "BigECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", + "BigECommerce.profitInCategory": "459.7526", + "BigECommerce.totalProfit": "168.6966", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Google Nexus 6", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "134.9925", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Google Nexus 7", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "134.9925", + }, + Object { + "BigECommerce.category": "Office Supplies", + "BigECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", + "BigECommerce.profitInCategory": "192.9558", + "BigECommerce.totalProfit": "81.432", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "74.9985", + }, + Object { + "BigECommerce.category": "Furniture", + "BigECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", + "BigECommerce.profitInCategory": "459.7526", + "BigECommerce.totalProfit": "60.5488", + }, + Object { + "BigECommerce.category": "Office Supplies", + "BigECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", + "BigECommerce.profitInCategory": "192.9558", + "BigECommerce.totalProfit": "50.372", + }, + Object { + "BigECommerce.category": "Office Supplies", + "BigECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", + "BigECommerce.profitInCategory": "192.9558", + "BigECommerce.totalProfit": "43.2796", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "HTC One", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "26.9973", + }, + Object { + "BigECommerce.category": "Furniture", + "BigECommerce.productName": "Balt Solid Wood Rectangular Table", + "BigECommerce.profitInCategory": "459.7526", + "BigECommerce.totalProfit": "21.098", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "13.604", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "8.5025", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "8.5025", + }, + Object { + "BigECommerce.category": "Furniture", + "BigECommerce.productName": "Linden 10 Round Wall Clock, Black", + "BigECommerce.profitInCategory": "459.7526", + "BigECommerce.totalProfit": "5.5008", + }, + Object { + "BigECommerce.category": "Furniture", + "BigECommerce.productName": "Magna Visual Magnetic Picture Hangers", + "BigECommerce.profitInCategory": "459.7526", + "BigECommerce.totalProfit": "5.3984", + }, + Object { + "BigECommerce.category": "Office Supplies", + "BigECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", + "BigECommerce.profitInCategory": "192.9558", + "BigECommerce.totalProfit": "5.2026", + }, + Object { + "BigECommerce.category": "Office Supplies", + "BigECommerce.productName": "OIC #2 Pencils, Medium Soft", + "BigECommerce.profitInCategory": "192.9558", + "BigECommerce.totalProfit": "4.9068", + }, + Object { + "BigECommerce.category": "Office Supplies", + "BigECommerce.productName": "Project Tote Personal File", + "BigECommerce.profitInCategory": "192.9558", + "BigECommerce.totalProfit": "4.0687", + }, + Object { + "BigECommerce.category": "Office Supplies", + "BigECommerce.productName": "Recycled Eldon Regeneration Jumbo File", + "BigECommerce.profitInCategory": "192.9558", + "BigECommerce.totalProfit": "3.9296", + }, + Object { + "BigECommerce.category": "Office Supplies", + "BigECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", + "BigECommerce.profitInCategory": "192.9558", + "BigECommerce.totalProfit": "-0.2355", + }, + Object { + "BigECommerce.category": "Furniture", + "BigECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", + "BigECommerce.profitInCategory": "459.7526", + "BigECommerce.totalProfit": "-3.3506", + }, + Object { + "BigECommerce.category": "Furniture", + "BigECommerce.productName": "DMI Eclipse Executive Suite Bookcases", + "BigECommerce.profitInCategory": "459.7526", + "BigECommerce.totalProfit": "-5.0098", + }, + Object { + "BigECommerce.category": "Technology", + "BigECommerce.productName": "Okidata C610n Printer", + "BigECommerce.profitInCategory": "2398.8443", + "BigECommerce.totalProfit": "-272.58", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying BigECommerce: rolling window YTD without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "5", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "6", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "11", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "18", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "24", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "28", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "37", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountYTD": "44", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying BigECommerce: rolling window by 2 day without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": "1", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Day": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying BigECommerce: rolling window by 2 month without date range 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "2", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "3", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "12", + }, + Object { + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "7", + }, + Object { + "BigECommerce.orderDate": "2020-08-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": null, + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "6", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "10", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "13", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.rollingCountBy2Month": "16", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying BigECommerce: two multi-stage branches sharing one pre-aggregation 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "29.6548", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "6.1992", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "583.5945", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "6.4176", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "353.6849", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "34.2361", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "461.1332", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "139.997", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "1132.6617", + "BigECommerce.totalProfitNoIdPct": "50", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.totalProfitNoId": "303.9737", + "BigECommerce.totalProfitNoIdPct": "50", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.98000", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.89600", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.36800", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.96000", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.60000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.88000", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.37600", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.20800", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.76000", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.60000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.96000", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.79200", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.73600", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.92000", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.20000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials querying custom granularities ECommerce: count by two_mo_by_feb + no dimension + rollingCountByLeading without date range 1`] = ` +Array [ + Object { + "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "8", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "12", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "6", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "19", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", + "ECommerce.rollingCountByLeading": "16", + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, + Object { + "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", + "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", + "ECommerce.rollingCountByLeading": null, + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap index 6902c9fdf1e6c..0acc8160e630c 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap @@ -22077,3 +22077,522 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.98000", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.89600", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.36800", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.96000", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.60000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.88000", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.37600", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.20800", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.76000", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.60000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.96000", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.79200", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.73600", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.92000", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.20000", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-encrypted-pk-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-encrypted-pk-full.test.ts.snap index 9082eb9d919e5..166d9423bc751 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-encrypted-pk-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-encrypted-pk-full.test.ts.snap @@ -22457,3 +22457,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-full.test.ts.snap index 35f792b258380..175b1eb7053b7 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-full.test.ts.snap @@ -22427,3 +22427,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-prefix-full.test.ts.snap index f31e1c60896e8..d6f7e7a90149f 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-prefix-full.test.ts.snap @@ -22232,3 +22232,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-via-storage-integration-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-via-storage-integration-full.test.ts.snap index ce2ea62b6d5a8..1331bec617f76 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-via-storage-integration-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-via-storage-integration-full.test.ts.snap @@ -22427,3 +22427,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-full.test.ts.snap index 709c17d58dadf..bfa961525e00b 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-full.test.ts.snap @@ -22427,3 +22427,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-prefix-full.test.ts.snap index 91496fe275d8e..2bceaccec2b18 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-prefix-full.test.ts.snap @@ -22232,3 +22232,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-full.test.ts.snap index 0e2f911d0dc03..9d58e8b313dd4 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-full.test.ts.snap @@ -22427,3 +22427,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-prefix-full.test.ts.snap index e75bfba94f9a1..73180603e7732 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-prefix-full.test.ts.snap @@ -22232,3 +22232,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-via-storage-integration-iam-roles-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-via-storage-integration-iam-roles-full.test.ts.snap index 108b9a72097e4..bf00d1307b999 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-via-storage-integration-iam-roles-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-via-storage-integration-iam-roles-full.test.ts.snap @@ -22232,3 +22232,615 @@ Array [ }, ] `; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles Tesseract: SQL API: Timeshift measure from cube 1`] = ` +Array [ + Object { + "orderDate": 2020-01-01T00:00:00.000Z, + "totalQuantity": 6, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-02-01T00:00:00.000Z, + "totalQuantity": 2, + "totalQuantityPriorMonth": 6, + }, + Object { + "orderDate": 2020-03-01T00:00:00.000Z, + "totalQuantity": 13, + "totalQuantityPriorMonth": 2, + }, + Object { + "orderDate": 2020-04-01T00:00:00.000Z, + "totalQuantity": 3, + "totalQuantityPriorMonth": 13, + }, + Object { + "orderDate": 2020-05-01T00:00:00.000Z, + "totalQuantity": 15, + "totalQuantityPriorMonth": 3, + }, + Object { + "orderDate": 2020-06-01T00:00:00.000Z, + "totalQuantity": 18, + "totalQuantityPriorMonth": 15, + }, + Object { + "orderDate": 2020-07-01T00:00:00.000Z, + "totalQuantity": null, + "totalQuantityPriorMonth": 18, + }, + Object { + "orderDate": 2020-09-01T00:00:00.000Z, + "totalQuantity": 27, + "totalQuantityPriorMonth": null, + }, + Object { + "orderDate": 2020-10-01T00:00:00.000Z, + "totalQuantity": 11, + "totalQuantityPriorMonth": 27, + }, + Object { + "orderDate": 2020-11-01T00:00:00.000Z, + "totalQuantity": 43, + "totalQuantityPriorMonth": 11, + }, + Object { + "orderDate": 2020-12-01T00:00:00.000Z, + "totalQuantity": 22, + "totalQuantityPriorMonth": 43, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", + "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", + "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.totalCountRetailMonthAgo": null, + "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", + "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", + "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", + "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-02-23T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-02-23T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-03-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-03-29T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-04-12T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-04-12T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-05-17T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-17T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-06-28T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-06-28T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-09-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-09-27T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", + }, + Object { + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", + "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "3", + "RetailCalendar.retail_date": "2020-12-06T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-06T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": null, + "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", + }, + Object { + "BigECommerce.count": null, + "BigECommerce.totalCountRetailWeekAgo": "2", + "RetailCalendar.retail_date": "2020-12-27T00:00:00.000", + "RetailCalendar.retail_date.week": "2020-12-27T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` +Array [ + Object { + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", + "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", + "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles querying BigECommerce: SeveralMultiStageMeasures 1`] = ` +Array [ + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "2", + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "1", + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "2", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "5", + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "1", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "5", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": null, + "BigECommerce.orderDate": "2020-07-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": null, + "BigECommerce.totalCountRetailMonthAgo": "7", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "6", + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": null, + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "4", + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "6", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "9", + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "4", + "BigECommerce.totalProfitYearAgo": null, + }, + Object { + "BigECommerce.count": "7", + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.percentageOfTotalForStatus": "100", + "BigECommerce.totalCountRetailMonthAgo": "9", + "BigECommerce.totalProfitYearAgo": null, + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles querying BigECommerce: multi-stage group by time dimension 1`] = ` +Array [ + Object { + "BigECommerce.orderDate": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "29.6548", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "6.1992", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-01-01T00:00:00.000", + "BigECommerce.totalProfit": "583.5945", + "BigECommerce.totalProfitForQuarter": "619.4485", + }, + Object { + "BigECommerce.orderDate": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "6.4176", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "353.6849", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-04-01T00:00:00.000", + "BigECommerce.totalProfit": "34.2361", + "BigECommerce.totalProfitForQuarter": "394.3386", + }, + Object { + "BigECommerce.orderDate": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-07-01T00:00:00.000", + "BigECommerce.totalProfit": "461.1332", + "BigECommerce.totalProfitForQuarter": "461.1332", + }, + Object { + "BigECommerce.orderDate": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "139.997", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "1132.6617", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, + Object { + "BigECommerce.orderDate": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", + "BigECommerce.orderDate.quarter": "2020-10-01T00:00:00.000", + "BigECommerce.totalProfit": "303.9737", + "BigECommerce.totalProfitForQuarter": "1576.6324", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles querying SwitchSourceTest: filter by switch dimensions 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "210.980", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "48.896", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "18.368", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "2399.960", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "71.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles querying SwitchSourceTest: full cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "1265.880", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSales": "293.376", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSales": "110.208", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "14399.760", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSales": "429.600", + }, +] +`; + +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles querying SwitchSourceTest: simple cross join 1`] = ` +Array [ + Object { + "SwitchSourceTest.city": "Detroit", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "421.960", + }, + Object { + "SwitchSourceTest.city": "Lorain", + "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "97.792", + }, + Object { + "SwitchSourceTest.city": "Decatur", + "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "36.736", + }, + Object { + "SwitchSourceTest.city": "Houston", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "4799.920", + }, + Object { + "SwitchSourceTest.city": "New York City", + "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", + "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", + "SwitchSourceTest.totalSalesA": "143.200", + }, +] +`; diff --git a/packages/cubejs-testing/test/__snapshots__/birdbox-postgresql-pre-aggregations.test.ts.snap b/packages/cubejs-testing/test/__snapshots__/birdbox-postgresql-pre-aggregations.test.ts.snap index c13b4524d32f2..549a4cfbe49fd 100644 --- a/packages/cubejs-testing/test/__snapshots__/birdbox-postgresql-pre-aggregations.test.ts.snap +++ b/packages/cubejs-testing/test/__snapshots__/birdbox-postgresql-pre-aggregations.test.ts.snap @@ -13,6 +13,13 @@ Array [ exports[`postgresql-cubestore HTTP Transport Rolling Mixed: Rolling Mixed 1`] = ` Array [ + Object { + "visitors.checkinsRolling2day": null, + "visitors.checkinsRollingTotal": "0", + "visitors.count": null, + "visitors.createdAt": "2017-01-02T00:00:00.000", + "visitors.createdAt.day": "2017-01-02T00:00:00.000", + }, Object { "visitors.checkinsRolling2day": "3", "visitors.checkinsRollingTotal": "3", @@ -20,6 +27,13 @@ Array [ "visitors.createdAt": "2017-01-03T00:00:00.000", "visitors.createdAt.day": "2017-01-03T00:00:00.000", }, + Object { + "visitors.checkinsRolling2day": "3", + "visitors.checkinsRollingTotal": "3", + "visitors.count": null, + "visitors.createdAt": "2017-01-04T00:00:00.000", + "visitors.createdAt.day": "2017-01-04T00:00:00.000", + }, Object { "visitors.checkinsRolling2day": "2", "visitors.checkinsRollingTotal": "5", @@ -32,18 +46,78 @@ Array [ exports[`postgresql-cubestore HTTP Transport Rolling Prev Period ratio: Rolling Prev Period ratio 1`] = ` Array [ + Object { + "visitors.createdAt": "2017-02-02T00:00:00.000", + "visitors.createdAt.day": "2017-02-02T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "google", + }, Object { "visitors.createdAt": "2017-02-02T00:00:00.000", "visitors.createdAt.day": "2017-02-02T00:00:00.000", "visitors.currentMonthToPrevRatio": "0.6666666666666666", "visitors.source": "some", }, + Object { + "visitors.createdAt": "2017-02-02T00:00:00.000", + "visitors.createdAt.day": "2017-02-02T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": null, + }, + Object { + "visitors.createdAt": "2017-02-03T00:00:00.000", + "visitors.createdAt.day": "2017-02-03T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "google", + }, Object { "visitors.createdAt": "2017-02-03T00:00:00.000", "visitors.createdAt.day": "2017-02-03T00:00:00.000", "visitors.currentMonthToPrevRatio": "0.6666666666666666", "visitors.source": "some", }, + Object { + "visitors.createdAt": "2017-02-03T00:00:00.000", + "visitors.createdAt.day": "2017-02-03T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": null, + }, + Object { + "visitors.createdAt": "2017-02-04T00:00:00.000", + "visitors.createdAt.day": "2017-02-04T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "google", + }, + Object { + "visitors.createdAt": "2017-02-04T00:00:00.000", + "visitors.createdAt.day": "2017-02-04T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "some", + }, + Object { + "visitors.createdAt": "2017-02-04T00:00:00.000", + "visitors.createdAt.day": "2017-02-04T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": null, + }, + Object { + "visitors.createdAt": "2017-02-05T00:00:00.000", + "visitors.createdAt.day": "2017-02-05T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "google", + }, + Object { + "visitors.createdAt": "2017-02-05T00:00:00.000", + "visitors.createdAt.day": "2017-02-05T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "some", + }, + Object { + "visitors.createdAt": "2017-02-05T00:00:00.000", + "visitors.createdAt.day": "2017-02-05T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": null, + }, ] `; diff --git a/packages/cubejs-testing/test/__snapshots__/cli-postgresql-pre-aggregations.test.ts.snap b/packages/cubejs-testing/test/__snapshots__/cli-postgresql-pre-aggregations.test.ts.snap index 45a38f001cd67..a19770408ed7a 100644 --- a/packages/cubejs-testing/test/__snapshots__/cli-postgresql-pre-aggregations.test.ts.snap +++ b/packages/cubejs-testing/test/__snapshots__/cli-postgresql-pre-aggregations.test.ts.snap @@ -11,35 +11,28 @@ Array [ ] `; -exports[`postgresql HTTP Transport Rolling Mixed With Dimension: Rolling Mixed With Dimension 1`] = ` +exports[`postgresql HTTP Transport Rolling Mixed: Rolling Mixed 1`] = ` Array [ + Object { + "visitors.checkinsRolling2day": null, + "visitors.checkinsRollingTotal": "0", + "visitors.count": null, + "visitors.createdAt": "2017-01-02T00:00:00.000", + "visitors.createdAt.day": "2017-01-02T00:00:00.000", + }, Object { "visitors.checkinsRolling2day": "3", "visitors.checkinsRollingTotal": "3", "visitors.count": "1", "visitors.createdAt": "2017-01-03T00:00:00.000", "visitors.createdAt.day": "2017-01-03T00:00:00.000", - "visitors.source": "some", }, - Object { - "visitors.checkinsRolling2day": "2", - "visitors.checkinsRollingTotal": "5", - "visitors.count": "1", - "visitors.createdAt": "2017-01-05T00:00:00.000", - "visitors.createdAt.day": "2017-01-05T00:00:00.000", - "visitors.source": "some", - }, -] -`; - -exports[`postgresql HTTP Transport Rolling Mixed: Rolling Mixed 1`] = ` -Array [ Object { "visitors.checkinsRolling2day": "3", "visitors.checkinsRollingTotal": "3", - "visitors.count": "1", - "visitors.createdAt": "2017-01-03T00:00:00.000", - "visitors.createdAt.day": "2017-01-03T00:00:00.000", + "visitors.count": null, + "visitors.createdAt": "2017-01-04T00:00:00.000", + "visitors.createdAt.day": "2017-01-04T00:00:00.000", }, Object { "visitors.checkinsRolling2day": "2", @@ -53,18 +46,78 @@ Array [ exports[`postgresql HTTP Transport Rolling Prev Period ratio: Rolling Prev Period ratio 1`] = ` Array [ + Object { + "visitors.createdAt": "2017-02-02T00:00:00.000", + "visitors.createdAt.day": "2017-02-02T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "google", + }, Object { "visitors.createdAt": "2017-02-02T00:00:00.000", "visitors.createdAt.day": "2017-02-02T00:00:00.000", "visitors.currentMonthToPrevRatio": "0.6666666666666666", "visitors.source": "some", }, + Object { + "visitors.createdAt": "2017-02-02T00:00:00.000", + "visitors.createdAt.day": "2017-02-02T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": null, + }, + Object { + "visitors.createdAt": "2017-02-03T00:00:00.000", + "visitors.createdAt.day": "2017-02-03T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "google", + }, Object { "visitors.createdAt": "2017-02-03T00:00:00.000", "visitors.createdAt.day": "2017-02-03T00:00:00.000", "visitors.currentMonthToPrevRatio": "0.6666666666666666", "visitors.source": "some", }, + Object { + "visitors.createdAt": "2017-02-03T00:00:00.000", + "visitors.createdAt.day": "2017-02-03T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": null, + }, + Object { + "visitors.createdAt": "2017-02-04T00:00:00.000", + "visitors.createdAt.day": "2017-02-04T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "google", + }, + Object { + "visitors.createdAt": "2017-02-04T00:00:00.000", + "visitors.createdAt.day": "2017-02-04T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "some", + }, + Object { + "visitors.createdAt": "2017-02-04T00:00:00.000", + "visitors.createdAt.day": "2017-02-04T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": null, + }, + Object { + "visitors.createdAt": "2017-02-05T00:00:00.000", + "visitors.createdAt.day": "2017-02-05T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "google", + }, + Object { + "visitors.createdAt": "2017-02-05T00:00:00.000", + "visitors.createdAt.day": "2017-02-05T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": "some", + }, + Object { + "visitors.createdAt": "2017-02-05T00:00:00.000", + "visitors.createdAt.day": "2017-02-05T00:00:00.000", + "visitors.currentMonthToPrevRatio": null, + "visitors.source": null, + }, ] `; @@ -125,50 +178,3 @@ Array [ }, ] `; - -exports[`postgresql HTTP Transport Rolling: Rolling 1`] = ` -Array [ - Object { - "visitors.checkinsRollingTotal": "0", - "visitors.createdAt": "2017-01-02T00:00:00.000", - "visitors.createdAt.day": "2017-01-02T00:00:00.000", - "visitors.source": null, - }, - Object { - "visitors.checkinsRollingTotal": "3", - "visitors.createdAt": "2017-01-03T00:00:00.000", - "visitors.createdAt.day": "2017-01-03T00:00:00.000", - "visitors.source": "some", - }, - Object { - "visitors.checkinsRollingTotal": "0", - "visitors.createdAt": "2017-01-03T00:00:00.000", - "visitors.createdAt.day": "2017-01-03T00:00:00.000", - "visitors.source": null, - }, - Object { - "visitors.checkinsRollingTotal": "3", - "visitors.createdAt": "2017-01-04T00:00:00.000", - "visitors.createdAt.day": "2017-01-04T00:00:00.000", - "visitors.source": "some", - }, - Object { - "visitors.checkinsRollingTotal": "0", - "visitors.createdAt": "2017-01-04T00:00:00.000", - "visitors.createdAt.day": "2017-01-04T00:00:00.000", - "visitors.source": null, - }, - Object { - "visitors.checkinsRollingTotal": "5", - "visitors.createdAt": "2017-01-05T00:00:00.000", - "visitors.createdAt.day": "2017-01-05T00:00:00.000", - "visitors.source": "some", - }, - Object { - "visitors.checkinsRollingTotal": "0", - "visitors.createdAt": "2017-01-05T00:00:00.000", - "visitors.createdAt.day": "2017-01-05T00:00:00.000", - "visitors.source": null, - }, -] -`; diff --git a/packages/cubejs-testing/test/__snapshots__/smoke-cubesql.test.ts.snap b/packages/cubejs-testing/test/__snapshots__/smoke-cubesql.test.ts.snap index 01836b7ba2047..38e9a467edb0d 100644 --- a/packages/cubejs-testing/test/__snapshots__/smoke-cubesql.test.ts.snap +++ b/packages/cubejs-testing/test/__snapshots__/smoke-cubesql.test.ts.snap @@ -130,10 +130,8 @@ Object { FROM ( SELECT AVG(\\"t\\".\\"total\\") \\"avg_t_total_\\" FROM ( - SELECT - \\"orders\\".status \\"status\\", sum(\\"orders\\".amount) \\"total\\" - FROM - ( + SELECT \\"orders\\".status \\"status\\", sum(\\"orders\\".amount) \\"total\\" + FROM ( select 1 as id, 100 as amount, 'new' status, '2024-01-01'::timestamptz created_at, '2025-01-01'::timestamptz updated_at UNION ALL select 2 as id, 200 as amount, 'new' status, '2024-01-02'::timestamptz created_at, '2025-01-02'::timestamptz updated_at @@ -143,7 +141,8 @@ FROM ( select 4 as id, 500 as amount, 'processed' status, '2024-01-04'::timestamptz created_at, '2025-01-04'::timestamptz updated_at UNION ALL select 5 as id, 600 as amount, 'shipped' status, '2024-01-05'::timestamptz created_at, '2025-01-05'::timestamptz updated_at - ) AS \\"orders\\" GROUP BY 1 + ) AS \\"orders\\" + GROUP BY 1 ) AS \\"t\\" ) AS \\"t\\"", Array [], @@ -160,7 +159,7 @@ FROM ( "keep-alive", ], "content-length": Array [ - "1068", + "1049", ], "content-type": Array [ "application/json; charset=utf-8", @@ -184,10 +183,8 @@ Object { "sql": Object { "query_type": "regular", "sql": Array [ - "SELECT - sum(\\"orders\\".amount) \\"total\\" - FROM - ( + "SELECT sum(\\"orders\\".amount) \\"total\\" +FROM ( select 1 as id, 100 as amount, 'new' status, '2024-01-01'::timestamptz created_at, '2025-01-01'::timestamptz updated_at UNION ALL select 2 as id, 200 as amount, 'new' status, '2024-01-02'::timestamptz created_at, '2025-01-02'::timestamptz updated_at @@ -197,7 +194,7 @@ Object { select 4 as id, 500 as amount, 'processed' status, '2024-01-04'::timestamptz created_at, '2025-01-04'::timestamptz updated_at UNION ALL select 5 as id, 600 as amount, 'shipped' status, '2024-01-05'::timestamptz created_at, '2025-01-05'::timestamptz updated_at - ) AS \\"orders\\" ", + ) AS \\"orders\\"", Array [], ], "status": "ok", @@ -212,7 +209,7 @@ Object { "keep-alive", ], "content-length": Array [ - "828", + "812", ], "content-type": Array [ "application/json; charset=utf-8", @@ -269,10 +266,8 @@ Object { "sql": Object { "query_type": "regular", "sql": Array [ - "SELECT - sum(\\"orders\\".amount) \\"total\\" - FROM - ( + "SELECT sum(\\"orders\\".amount) \\"total\\" +FROM ( select 1 as id, 100 as amount, 'new' status, '2024-01-01'::timestamptz created_at, '2025-01-01'::timestamptz updated_at UNION ALL select 2 as id, 200 as amount, 'new' status, '2024-01-02'::timestamptz created_at, '2025-01-02'::timestamptz updated_at @@ -282,7 +277,8 @@ Object { select 4 as id, 500 as amount, 'processed' status, '2024-01-04'::timestamptz created_at, '2025-01-04'::timestamptz updated_at UNION ALL select 5 as id, 600 as amount, 'shipped' status, '2024-01-05'::timestamptz created_at, '2025-01-05'::timestamptz updated_at - ) AS \\"orders\\" WHERE (\\"orders\\".status = $1)", + ) AS \\"orders\\" +WHERE (\\"orders\\".status = $1)", Array [ "foo", ], @@ -299,7 +295,7 @@ Object { "keep-alive", ], "content-length": Array [ - "864", + "849", ], "content-type": Array [ "application/json; charset=utf-8", @@ -430,10 +426,8 @@ Object { "sql": Array [ "SELECT \\"Orders\\".\\"sum_orders_total\\" \\"total\\" FROM ( - SELECT - sum(\\"orders\\".amount) \\"sum_orders_total\\" - FROM - ( + SELECT sum(\\"orders\\".amount) \\"sum_orders_total\\" + FROM ( select 1 as id, 100 as amount, 'new' status, '2024-01-01'::timestamptz created_at, '2025-01-01'::timestamptz updated_at UNION ALL select 2 as id, 200 as amount, 'new' status, '2024-01-02'::timestamptz created_at, '2025-01-02'::timestamptz updated_at @@ -443,7 +437,8 @@ FROM ( select 4 as id, 500 as amount, 'processed' status, '2024-01-04'::timestamptz created_at, '2025-01-04'::timestamptz updated_at UNION ALL select 5 as id, 600 as amount, 'shipped' status, '2024-01-05'::timestamptz created_at, '2025-01-05'::timestamptz updated_at - ) AS \\"orders\\" WHERE ((LOWER(\\"orders\\".status) = UPPER(\\"orders\\".status))) + ) AS \\"orders\\" + WHERE ((LOWER(\\"orders\\".status) = UPPER(\\"orders\\".status))) ) AS \\"Orders\\"", Array [], ], @@ -459,7 +454,7 @@ FROM ( "keep-alive", ], "content-length": Array [ - "1006", + "989", ], "content-type": Array [ "application/json; charset=utf-8", @@ -485,10 +480,8 @@ Object { "sql": Array [ "SELECT \\"Orders\\".\\"sum_orders_total\\" \\"total\\" FROM ( - SELECT - sum(\\"orders\\".amount) \\"sum_orders_total\\" - FROM - ( + SELECT sum(\\"orders\\".amount) \\"sum_orders_total\\" + FROM ( select 1 as id, 100 as amount, 'new' status, '2024-01-01'::timestamptz created_at, '2025-01-01'::timestamptz updated_at UNION ALL select 2 as id, 200 as amount, 'new' status, '2024-01-02'::timestamptz created_at, '2025-01-02'::timestamptz updated_at @@ -498,7 +491,8 @@ FROM ( select 4 as id, 500 as amount, 'processed' status, '2024-01-04'::timestamptz created_at, '2025-01-04'::timestamptz updated_at UNION ALL select 5 as id, 600 as amount, 'shipped' status, '2024-01-05'::timestamptz created_at, '2025-01-05'::timestamptz updated_at - ) AS \\"orders\\" WHERE ((LOWER(\\"orders\\".status) = $1)) + ) AS \\"orders\\" + WHERE ((LOWER(\\"orders\\".status) = $1)) ) AS \\"Orders\\"", Array [ "foo", @@ -516,7 +510,7 @@ FROM ( "keep-alive", ], "content-length": Array [ - "989", + "972", ], "content-type": Array [ "application/json; charset=utf-8", diff --git a/rust/cubesql/cubesql/src/config/mod.rs b/rust/cubesql/cubesql/src/config/mod.rs index 6dc13293ab64d..7fa59539a8365 100644 --- a/rust/cubesql/cubesql/src/config/mod.rs +++ b/rust/cubesql/cubesql/src/config/mod.rs @@ -184,7 +184,7 @@ impl ConfigObjImpl { non_streaming_query_max_row_limit: env_parse("CUBEJS_DB_QUERY_LIMIT", 50000), max_sessions: env_parse("CUBEJS_MAX_SESSIONS", 1024), no_implicit_order: env_parse("CUBESQL_SQL_NO_IMPLICIT_ORDER", true), - tesseract_sql_planner: env_parse("CUBEJS_TESSERACT_SQL_PLANNER", false), + tesseract_sql_planner: env_parse("CUBEJS_TESSERACT_SQL_PLANNER", true), } } } From 553b7ef98f1fdf050013aaa81ab629bcc3bbeddc Mon Sep 17 00:00:00 2001 From: NathanFallet Date: Fri, 23 Jan 2026 16:55:57 +0100 Subject: [PATCH 17/24] feat(mysql-driver): Migrate driver to mysql2 library, thanks @nathanfallet --- .../configuration/data-sources/mysql.mdx | 12 +-- packages/cubejs-mysql-driver/package.json | 3 +- .../cubejs-mysql-driver/src/MySqlDriver.ts | 53 +++++++----- .../src/db-container-runners/mysql.ts | 10 +-- yarn.lock | 80 +++++++++++++++++-- 5 files changed, 111 insertions(+), 47 deletions(-) diff --git a/docs/content/product/configuration/data-sources/mysql.mdx b/docs/content/product/configuration/data-sources/mysql.mdx index 72fdb79332af8..4cfb55c47f9fc 100644 --- a/docs/content/product/configuration/data-sources/mysql.mdx +++ b/docs/content/product/configuration/data-sources/mysql.mdx @@ -92,16 +92,8 @@ When doing so, CUBEJS_DB_HOST will be ignored. ### Connecting to MySQL 8 -MySQL 8 uses a new default authentication plugin (`caching_sha2_password`) -whereas previous version used `mysql_native_password`. Please -[see this answer on StackOverflow](https://stackoverflow.com/a/50377944) -for a workaround. - - - -For additional details, check the [relevant issue](https://github.com/cube-js/cube/issues/3525) on GitHub. - - +MySQL 8 is fully supported and uses the new default authentication plugin +(`caching_sha2_password`). No additional configuration is required. [mysql]: https://www.mysql.com/ [ref-caching-using-preaggs-build-strats]: diff --git a/packages/cubejs-mysql-driver/package.json b/packages/cubejs-mysql-driver/package.json index 15a1d07e61c10..f4bba2e39c26c 100644 --- a/packages/cubejs-mysql-driver/package.json +++ b/packages/cubejs-mysql-driver/package.json @@ -29,13 +29,12 @@ "dependencies": { "@cubejs-backend/base-driver": "1.6.67", "@cubejs-backend/shared": "1.6.67", - "mysql": "^2.18.1" + "mysql2": "^3.16.1" }, "devDependencies": { "@cubejs-backend/linter": "1.6.67", "@cubejs-backend/testing-shared": "1.6.67", "@types/jest": "^29", - "@types/mysql": "^2.15.21", "jest": "^29", "stream-to-array": "^2.3.0", "testcontainers": "^10.28.0", diff --git a/packages/cubejs-mysql-driver/src/MySqlDriver.ts b/packages/cubejs-mysql-driver/src/MySqlDriver.ts index ff6904b2915a8..6b6877518618b 100644 --- a/packages/cubejs-mysql-driver/src/MySqlDriver.ts +++ b/packages/cubejs-mysql-driver/src/MySqlDriver.ts @@ -9,7 +9,7 @@ import { assertDataSource, Pool, } from '@cubejs-backend/shared'; -import mysql, { Connection, ConnectionConfig, FieldInfo, QueryOptions } from 'mysql'; +import mysql, { ConnectionOptions, QueryOptions } from 'mysql2'; import { promisify } from 'util'; import { BaseDriver, @@ -45,9 +45,9 @@ const MySqlNativeToMySqlType = { [mysql.Types.INT24]: 'mediumint', [mysql.Types.LONGLONG]: 'bigint', [mysql.Types.NEWDATE]: 'datetime', - [mysql.Types.TIMESTAMP2]: 'timestamp', - [mysql.Types.DATETIME2]: 'datetime', - [mysql.Types.TIME2]: 'time', + [mysql.Types.TIMESTAMP]: 'timestamp', + [mysql.Types.DATETIME]: 'datetime', + [mysql.Types.TIME]: 'time', [mysql.Types.TINY_BLOB]: 'tinytext', [mysql.Types.MEDIUM_BLOB]: 'mediumtext', [mysql.Types.LONG_BLOB]: 'longtext', @@ -69,15 +69,20 @@ const MySqlToGenericType: Record = { 'tinyint unsigned': 'int', }; -export interface MySqlDriverConfiguration extends ConnectionConfig { +export interface MySqlDriverConfiguration extends ConnectionOptions { readOnly?: boolean, loadPreAggregationWithoutMetaLock?: boolean, storeTimezone?: string, pool?: any, } -interface MySQLConnection extends Connection { - execute: (options: string | QueryOptions, values?: any) => Promise +interface MySQLConnection { + execute: (sql: string | QueryOptions, values?: any) => Promise; + query: any; + end: any; + connect: any; + on: any; + destroy: any; } /** @@ -131,7 +136,7 @@ export class MySqlDriver extends BaseDriver implements DriverInterface { assertDataSource('default'); const preAggregations = config.preAggregations || false; - const { pool, ...restConfig } = config; + const { pool, readOnly, ...restConfig } = config; this.config = { host: getEnv('dbHost', { dataSource, preAggregations }), database: getEnv('dbName', { dataSource, preAggregations }), @@ -140,16 +145,19 @@ export class MySqlDriver extends BaseDriver implements DriverInterface { password: getEnv('dbPass', { dataSource, preAggregations }), socketPath: getEnv('dbSocketPath', { dataSource, preAggregations }), timezone: 'Z', - ssl: this.getSslOptions(dataSource, preAggregations), + ssl: this.getSslOptions(dataSource, preAggregations) as any, dateStrings: true, - readOnly: true, + decimalNumbers: true, + readOnly: readOnly !== undefined ? readOnly : true, ...restConfig, }; const poolName = createPoolName('mysql', dataSource, preAggregations); this.pool = new Pool(poolName, { create: async () => { - const conn: any = mysql.createConnection(this.config); + // Extract driver-specific options that mysql2 doesn't recognize + const { readOnly: _, loadPreAggregationWithoutMetaLock: __, storeTimezone: ___, ...connectionConfig } = this.config; + const conn: any = mysql.createConnection(connectionConfig); const connect = promisify(conn.connect.bind(conn)); if (conn.on) { @@ -328,13 +336,13 @@ export class MySqlDriver extends BaseDriver implements DriverInterface { await this.setTimeZone(conn); const [rowStream, fields] = await ( - new Promise<[any, mysql.FieldInfo[]]>((resolve, reject) => { + new Promise<[any, mysql.FieldPacket[]]>((resolve, reject) => { const stream = conn.query(query, values).stream({ highWaterMark }); - stream.on('fields', (f) => { + stream.on('fields', (f: mysql.FieldPacket[]) => { resolve([stream, f]); }); - stream.on('error', (e) => { + stream.on('error', (e: Error) => { reject(e); }); }) @@ -356,12 +364,17 @@ export class MySqlDriver extends BaseDriver implements DriverInterface { } } - protected mapFieldsToGenericTypes(fields: mysql.FieldInfo[]) { - return fields.map((field) => { + protected mapFieldsToGenericTypes(fields: mysql.FieldPacket[] | mysql.FieldPacket[][]) { + // mysql2 returns FieldPacket[] in callbacks + const fieldArray = Array.isArray(fields) && fields.length > 0 && Array.isArray(fields[0]) + ? fields[0] as mysql.FieldPacket[] + : fields as mysql.FieldPacket[]; + + return fieldArray.map((field) => { // @ts-ignore - let dbType = mysql.Types[field.type]; + let dbType = mysql.Types[field.type || 0]; - if (field.type in MySqlNativeToMySqlType) { + if (field.type && field.type in MySqlNativeToMySqlType) { // @ts-ignore dbType = MySqlNativeToMySqlType[field.type]; } @@ -382,13 +395,13 @@ export class MySqlDriver extends BaseDriver implements DriverInterface { await this.setTimeZone(conn); return new Promise((resolve, reject) => { - conn.query(query, values, (err, rows, fields) => { + conn.query(query, values, (err: any, rows: any, fields: any) => { if (err) { reject(err); } else { resolve({ rows, - types: this.mapFieldsToGenericTypes(fields), + types: this.mapFieldsToGenericTypes(fields as mysql.FieldPacket[]), }); } }); diff --git a/packages/cubejs-testing-shared/src/db-container-runners/mysql.ts b/packages/cubejs-testing-shared/src/db-container-runners/mysql.ts index 92235f8f0a352..0bb6e9b41fdf2 100644 --- a/packages/cubejs-testing-shared/src/db-container-runners/mysql.ts +++ b/packages/cubejs-testing-shared/src/db-container-runners/mysql.ts @@ -4,7 +4,7 @@ import { DbRunnerAbstract, DBRunnerContainerOptions } from './db-runner.abstract export class MysqlDBRunner extends DbRunnerAbstract { public static startContainer(options: DBRunnerContainerOptions) { - const version = process.env.TEST_MYSQL_VERSION || options.version || '5.7'; + const version = process.env.TEST_MYSQL_VERSION || options.version || '8.0'; const container = new GenericContainer(`mysql:${version}`) .withEnvironment({ @@ -20,14 +20,6 @@ export class MysqlDBRunner extends DbRunnerAbstract { .withWaitStrategy(Wait.forHealthCheck()) .withExposedPorts(3306); - if (version.split('.')[0] === '8') { - /** - * workaround for MySQL 8 and unsupported auth in mysql package - * @link https://github.com/mysqljs/mysql/pull/2233 - */ - container.withCommand(['--default-authentication-plugin=mysql_native_password']); - } - if (options.volumes) { const binds = options.volumes.map(v => ({ source: v.source, target: v.target, mode: v.bindMode })); container.withBindMounts(binds); diff --git a/yarn.lock b/yarn.lock index 26b7ee52d704a..515b7797039cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8484,7 +8484,7 @@ dependencies: "@types/node" "*" -"@types/mysql@^2.15.15", "@types/mysql@^2.15.19", "@types/mysql@^2.15.21": +"@types/mysql@^2.15.15", "@types/mysql@^2.15.19": version "2.15.21" resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.21.tgz#7516cba7f9d077f980100c85fd500c8210bd5e45" integrity sha512-NPotx5CVful7yB+qZbWtXL2fA4e7aEHkihHLjklc6ID8aq7bhguHgeIoC1EmSNTAuCgI6ZXrjt2ZSaXnYX0EUg== @@ -10043,7 +10043,7 @@ aws-sign2@~0.7.0: resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws-ssl-profiles@^1.1.1: +aws-ssl-profiles@^1.1.1, aws-ssl-profiles@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz#157dd77e9f19b1d123678e93f120e6f193022641" integrity sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g== @@ -15327,6 +15327,13 @@ iconv-lite@^0.7.0: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +iconv-lite@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.2.tgz#d0bdeac3f12b4835b7359c2ad89c422a4d1cc72e" + integrity sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" @@ -17550,7 +17557,7 @@ logform@^2.7.0: safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" -long@^5.0.0, long@^5.2.1: +long@^5.0.0, long@^5.2.1, long@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== @@ -17608,6 +17615,16 @@ lru.min@^1.0.0: resolved "https://registry.yarnpkg.com/lru.min/-/lru.min-1.1.1.tgz#146e01e3a183fa7ba51049175de04667d5701f0e" integrity sha512-FbAj6lXil6t8z4z3j0E5mfRlPzxkySotzUHwRXjlpRh10vc6AI6WN62ehZj82VG7M20rqogJ0GLwar2Xa05a8Q== +lru.min@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/lru.min/-/lru.min-1.1.3.tgz#c8c3d001dfb4cbe5b8d1f4bea207d4a320e5d76f" + integrity sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q== + +lru.min@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lru.min/-/lru.min-1.1.4.tgz#6ea1737a8c1ba2300cc87ad46910a4bdffa0117b" + integrity sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA== + luxon@^3.2.1: version "3.4.4" resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" @@ -18364,6 +18381,20 @@ mysql2@^3.11.5: seq-queue "^0.0.5" sqlstring "^2.3.2" +mysql2@^3.16.1: + version "3.22.5" + resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.22.5.tgz#26c51c035ac577579ad239168015ad1eec321679" + integrity sha512-95uZ2TrPWAZdwpB3vvvDbmEMcNG8yIeNCyu6GUcr/QnWEE/wXm7+mhOCsdQfWQDTV7qYT/PDUZ4U4UPP4AsXqQ== + dependencies: + aws-ssl-profiles "^1.1.2" + denque "^2.1.0" + generate-function "^2.3.1" + iconv-lite "^0.7.2" + long "^5.3.2" + lru.min "^1.1.4" + named-placeholders "^1.1.6" + sql-escaper "^1.3.3" + mysql@^2.18.1: version "2.18.1" resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" @@ -18381,6 +18412,13 @@ named-placeholders@^1.1.3: dependencies: lru-cache "^7.14.1" +named-placeholders@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.6.tgz#c50c6920b43f258f59c16add1e56654f5cc02bb5" + integrity sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w== + dependencies: + lru.min "^1.1.0" + nan@^2.19.0, nan@^2.20.0, nan@^2.23.0: version "2.27.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.27.0.tgz#804e389f4c0e39b729a17eca85c80ebc4355c4c4" @@ -22670,6 +22708,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sql-escaper@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/sql-escaper/-/sql-escaper-1.3.3.tgz#65faf89f048d26bb9a75566b82b5990ddf8a5b7f" + integrity sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw== + sql-formatter@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/sql-formatter/-/sql-formatter-3.1.0.tgz#32035a65aa7f3e0466c0f9b30c306e2c701dc6cd" @@ -22847,7 +22890,16 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -22930,7 +22982,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -22951,6 +23003,13 @@ strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -24818,7 +24877,7 @@ workerpool@^9.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.2.0.tgz#f74427cbb61234708332ed8ab9cbf56dcb1c4371" integrity sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -24836,6 +24895,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 4f2d3b9416834ab87dbf84b24bed1e132bf2e512 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Wed, 1 Jul 2026 13:44:45 +0200 Subject: [PATCH 18/24] fix(mysql-driver): Use string for decimal values --- .../cubejs-mysql-driver/src/MySqlDriver.ts | 4 +- .../test/MySqlDriver.test.ts | 6 +- .../src/tests/testConnection.ts | 63 +- .../__snapshots__/mysql-driver.test.ts.snap | 8676 +++++++++++++++++ .../__snapshots__/mysql-full.test.ts.snap | 1746 ++-- 5 files changed, 9614 insertions(+), 881 deletions(-) diff --git a/packages/cubejs-mysql-driver/src/MySqlDriver.ts b/packages/cubejs-mysql-driver/src/MySqlDriver.ts index 6b6877518618b..7d7ccbc236d28 100644 --- a/packages/cubejs-mysql-driver/src/MySqlDriver.ts +++ b/packages/cubejs-mysql-driver/src/MySqlDriver.ts @@ -34,7 +34,7 @@ const GenericTypeToMySql: Record = { /** * MySQL Native types -> SQL type - * @link https://github.com/mysqljs/mysql/blob/master/lib/protocol/constants/types.js#L9 + * @link https://github.com/sidorares/node-mysql2/blob/master/lib/constants/types.js */ const MySqlNativeToMySqlType = { [mysql.Types.DECIMAL]: 'decimal', @@ -147,7 +147,7 @@ export class MySqlDriver extends BaseDriver implements DriverInterface { timezone: 'Z', ssl: this.getSslOptions(dataSource, preAggregations) as any, dateStrings: true, - decimalNumbers: true, + decimalNumbers: false, readOnly: readOnly !== undefined ? readOnly : true, ...restConfig, }; diff --git a/packages/cubejs-mysql-driver/test/MySqlDriver.test.ts b/packages/cubejs-mysql-driver/test/MySqlDriver.test.ts index fc2154dfee1cb..6da5d2c299bc7 100644 --- a/packages/cubejs-mysql-driver/test/MySqlDriver.test.ts +++ b/packages/cubejs-mysql-driver/test/MySqlDriver.test.ts @@ -108,9 +108,9 @@ describe('MySqlDriver', () => { }, ]); expect(await streamToArray(tableData.rowStream)).toEqual([ - { id: 1, created: '2020-01-01', price: 100 }, - { id: 2, created: '2020-01-02', price: 200 }, - { id: 3, created: '2020-01-03', price: 300 } + { id: 1, created: '2020-01-01', price: '100.0000000000' }, + { id: 2, created: '2020-01-02', price: '200.0000000000' }, + { id: 3, created: '2020-01-03', price: '300.0000000000' } ]); } finally { await tableData.release(); diff --git a/packages/cubejs-testing-drivers/src/tests/testConnection.ts b/packages/cubejs-testing-drivers/src/tests/testConnection.ts index a57187cdaf627..e10a5fe3f6b3b 100644 --- a/packages/cubejs-testing-drivers/src/tests/testConnection.ts +++ b/packages/cubejs-testing-drivers/src/tests/testConnection.ts @@ -13,6 +13,12 @@ import { runEnvironment, } from '../helpers'; +const anyOrNull: any = { + $$typeof: Symbol.for('jest.asymmetricMatcher'), + asymmetricMatch: () => true, + toAsymmetricMatcher: () => 'AnyOrNull', +}; + export function testConnection(type: string): void { describe(`Raw @cubejs-backend/${type}-driver`, () => { jest.setTimeout(60 * 5 * 1000); @@ -69,7 +75,7 @@ export function testConnection(type: string): void { return res; }) ); - expect(response.length).toBe(3); + expect(response.length).toBe(5); response[0].forEach((item: any) => { const i: any = {}; @@ -117,6 +123,53 @@ export function testConnection(type: string): void { }); }); expect(response[2].length).toBe(44); + + response[3].forEach((item: any) => { + const i: any = {}; + Object.keys(item).forEach((key) => { + i[key.toLowerCase()] = item[key]; + }); + expect(i).toMatchSnapshot({ + id: expect.anything(), // can be String or Number + row_id: expect.anything(), // can be String or Number + order_id: expect.any(String), + order_date: expect.anything(), // can be String or Date + completed_date: expect.anything(), // can be String or Date + customer_id: expect.any(String), + city: expect.any(String), + category: expect.any(String), + sub_category: expect.any(String), + product_name: expect.any(String), + sales: anyOrNull, // String or Number, NULL for some rows + quantity: expect.anything(), // can be String or Number + discount: expect.anything(), // can be String or Number + profit: expect.anything(), // can be String or Number + is_returning: anyOrNull, // Boolean or Number, NULL for some rows + }); + }); + expect(response[3].length).toBe(44); + + response[4].forEach((item: any) => { + const i: any = {}; + Object.keys(item).forEach((key) => { + i[key.toLowerCase()] = item[key]; + }); + expect(i).toMatchSnapshot({ + date_val: expect.anything(), // can be String or Date + retail_year_name: expect.any(String), + retail_quarter_name: expect.any(String), + retail_month_name: expect.any(String), + retail_week_name: expect.any(String), + retail_year_begin_date: expect.anything(), // can be String or Date + retail_quarter_begin_date: expect.anything(), // can be String or Date + retail_month_begin_date: expect.anything(), // can be String or Date + retail_week_begin_date: expect.anything(), // can be String or Date + retail_date_prev_month: anyOrNull, // String or Date, NULL at boundaries + retail_date_prev_quarter: anyOrNull, // String or Date, NULL at boundaries + retail_date_prev_year: anyOrNull, // String or Date, NULL at boundaries + }); + }); + expect(response[4].length).toBe(456); }); execute('must download query from the data source via memory', async () => { @@ -138,10 +191,12 @@ export function testConnection(type: string): void { }) ); - expect(response.length).toBe(3); + expect(response.length).toBe(5); expect(response[0].data.length).toBe(28); expect(response[1].data.length).toBe(41); expect(response[2].data.length).toBe(44); + expect(response[3].data.length).toBe(44); + expect(response[4].data.length).toBe(456); }); execute('must download query from the data source via stream', async () => { @@ -174,10 +229,12 @@ export function testConnection(type: string): void { }) ); - expect(response.length).toBe(3); + expect(response.length).toBe(5); expect(response[0].data.length).toBe(28); expect(response[1].data.length).toBe(41); expect(response[2].data.length).toBe(44); + expect(response[3].data.length).toBe(44); + expect(response[4].data.length).toBe(456); }); execute('must delete the data source', async () => { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/mysql-driver.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/mysql-driver.test.ts.snap index e2157cfa9da0a..cbb3ce6914dc8 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/mysql-driver.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/mysql-driver.test.ts.snap @@ -515,6 +515,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 70`] Object { "category": Any, "city": Any, + "completed_date": "2020-10-20", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -532,6 +533,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 71`] Object { "category": Any, "city": Any, + "completed_date": "2020-01-24", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -549,6 +551,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 72`] Object { "category": Any, "city": Any, + "completed_date": "2020-06-26", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -566,6 +569,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 73`] Object { "category": Any, "city": Any, + "completed_date": "2020-10-13", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -583,6 +587,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 74`] Object { "category": Any, "city": Any, + "completed_date": "2020-09-18", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -600,6 +605,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 75`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-13", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -617,6 +623,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 76`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-06", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -634,6 +641,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 77`] Object { "category": Any, "city": Any, + "completed_date": "2020-09-02", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -651,6 +659,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 78`] Object { "category": Any, "city": Any, + "completed_date": "2020-12-25", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -668,6 +677,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 79`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-07", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -685,6 +695,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 80`] Object { "category": Any, "city": Any, + "completed_date": "2020-10-20", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -702,6 +713,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 81`] Object { "category": Any, "city": Any, + "completed_date": "2020-04-11", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -719,6 +731,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 82`] Object { "category": Any, "city": Any, + "completed_date": "2020-01-02", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -736,6 +749,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 83`] Object { "category": Any, "city": Any, + "completed_date": "2020-12-02", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -753,6 +767,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 84`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-01", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -770,6 +785,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 85`] Object { "category": Any, "city": Any, + "completed_date": "2020-09-03", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -787,6 +803,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 86`] Object { "category": Any, "city": Any, + "completed_date": "2020-06-12", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -804,6 +821,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 87`] Object { "category": Any, "city": Any, + "completed_date": "2020-05-15", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -821,6 +839,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 88`] Object { "category": Any, "city": Any, + "completed_date": "2020-12-03", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -838,6 +857,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 89`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-17", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -855,6 +875,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 90`] Object { "category": Any, "city": Any, + "completed_date": "2020-06-18", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -872,6 +893,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 91`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-22", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -889,6 +911,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 92`] Object { "category": Any, "city": Any, + "completed_date": "2020-05-14", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -906,6 +929,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 93`] Object { "category": Any, "city": Any, + "completed_date": "2020-09-24", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -923,6 +947,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 94`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-12", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -940,6 +965,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 95`] Object { "category": Any, "city": Any, + "completed_date": "2020-09-09", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -957,6 +983,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 96`] Object { "category": Any, "city": Any, + "completed_date": "2020-02-17", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -974,6 +1001,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 97`] Object { "category": Any, "city": Any, + "completed_date": "2020-06-26", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -991,6 +1019,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 98`] Object { "category": Any, "city": Any, + "completed_date": "2020-06-11", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1008,6 +1037,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 99`] Object { "category": Any, "city": Any, + "completed_date": "2020-05-30", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1025,6 +1055,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 100`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-03", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1042,6 +1073,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 101`] Object { "category": Any, "city": Any, + "completed_date": "2020-12-15", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1059,6 +1091,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 102`] Object { "category": Any, "city": Any, + "completed_date": "2020-06-04", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1076,6 +1109,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 103`] Object { "category": Any, "city": Any, + "completed_date": "2020-03-18", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1093,6 +1127,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 104`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-29", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1110,6 +1145,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 105`] Object { "category": Any, "city": Any, + "completed_date": "2020-05-28", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1127,6 +1163,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 106`] Object { "category": Any, "city": Any, + "completed_date": "2020-05-15", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1144,6 +1181,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 107`] Object { "category": Any, "city": Any, + "completed_date": "2020-06-16", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1161,6 +1199,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 108`] Object { "category": Any, "city": Any, + "completed_date": "2020-12-17", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1178,6 +1217,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 109`] Object { "category": Any, "city": Any, + "completed_date": "2020-03-27", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1195,6 +1235,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 110`] Object { "category": Any, "city": Any, + "completed_date": "2020-11-17", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1212,6 +1253,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 111`] Object { "category": Any, "city": Any, + "completed_date": "2020-12-26", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1229,6 +1271,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 112`] Object { "category": Any, "city": Any, + "completed_date": "2020-09-18", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1246,6 +1289,7 @@ exports[`Raw @cubejs-backend/mysql-driver must select from the data source 113`] Object { "category": Any, "city": Any, + "completed_date": "2020-12-05", "customer_id": Any, "discount": Anything, "order_date": Anything, @@ -1258,3 +1302,8635 @@ Object { "sub_category": Any, } `; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 114`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 115`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 116`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 117`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 118`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 119`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 120`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 121`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 122`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 123`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 124`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 125`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 126`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 127`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 128`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 129`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 130`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 131`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 132`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 133`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 134`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 135`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 136`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 137`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 138`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 139`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 140`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 141`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 142`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 143`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 144`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 145`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 146`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 147`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 148`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 149`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 150`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 151`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 152`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 153`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 154`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 155`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 156`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 157`] = ` +Object { + "category": Any, + "city": Any, + "completed_date": Anything, + "customer_id": Any, + "discount": Anything, + "id": Anything, + "is_returning": AnyOrNull, + "order_date": Anything, + "order_id": Any, + "product_name": Any, + "profit": Anything, + "quantity": Anything, + "row_id": Anything, + "sales": AnyOrNull, + "sub_category": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 158`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 159`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 160`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 161`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 162`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 163`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 164`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 165`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 166`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 167`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 168`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 169`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 170`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 171`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 172`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 173`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 174`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 175`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 176`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 177`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 178`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 179`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 180`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 181`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 182`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 183`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 184`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 185`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 186`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 187`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 188`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 189`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 190`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 191`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 192`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 193`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 194`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 195`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 196`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 197`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 198`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 199`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 200`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 201`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 202`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 203`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 204`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 205`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 206`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 207`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 208`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 209`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 210`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 211`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 212`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 213`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 214`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 215`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 216`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 217`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 218`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 219`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 220`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 221`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 222`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 223`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 224`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 225`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 226`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 227`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 228`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 229`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 230`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 231`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 232`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 233`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 234`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 235`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 236`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 237`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 238`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 239`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 240`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 241`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 242`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 243`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 244`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 245`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 246`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 247`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 248`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 249`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 250`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 251`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 252`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 253`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 254`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 255`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 256`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 257`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 258`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 259`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 260`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 261`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 262`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 263`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 264`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 265`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 266`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 267`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 268`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 269`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 270`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 271`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 272`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 273`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 274`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 275`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 276`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 277`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 278`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 279`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 280`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 281`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 282`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 283`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 284`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 285`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 286`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 287`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 288`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 289`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 290`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 291`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 292`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 293`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 294`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 295`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 296`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 297`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 298`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 299`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 300`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 301`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 302`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 303`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 304`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 305`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 306`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 307`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 308`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 309`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 310`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 311`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 312`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 313`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 314`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 315`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 316`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 317`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 318`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 319`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 320`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 321`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 322`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 323`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 324`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 325`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 326`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 327`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 328`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 329`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 330`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 331`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 332`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 333`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 334`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 335`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 336`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 337`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 338`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 339`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 340`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 341`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 342`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 343`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 344`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 345`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 346`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 347`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 348`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 349`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 350`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 351`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 352`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 353`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 354`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 355`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 356`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 357`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 358`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 359`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 360`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 361`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 362`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 363`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 364`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 365`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 366`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 367`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 368`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 369`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 370`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 371`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 372`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 373`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 374`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 375`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 376`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 377`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 378`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 379`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 380`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 381`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 382`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 383`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 384`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 385`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 386`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 387`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 388`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 389`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 390`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 391`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 392`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 393`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 394`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 395`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 396`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 397`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 398`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 399`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 400`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 401`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 402`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 403`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 404`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 405`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 406`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 407`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 408`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 409`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 410`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 411`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 412`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 413`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 414`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 415`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 416`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 417`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 418`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 419`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 420`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 421`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 422`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 423`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 424`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 425`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 426`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 427`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 428`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 429`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 430`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 431`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 432`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 433`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 434`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 435`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 436`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 437`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 438`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 439`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 440`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 441`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 442`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 443`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 444`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 445`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 446`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 447`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 448`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 449`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 450`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 451`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 452`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 453`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 454`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 455`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 456`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 457`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 458`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 459`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 460`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 461`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 462`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 463`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 464`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 465`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 466`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 467`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 468`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 469`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 470`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 471`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 472`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 473`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 474`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 475`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 476`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 477`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 478`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 479`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 480`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 481`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 482`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 483`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 484`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 485`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 486`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 487`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 488`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 489`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 490`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 491`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 492`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 493`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 494`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 495`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 496`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 497`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 498`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 499`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 500`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 501`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 502`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 503`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 504`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 505`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 506`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 507`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 508`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 509`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 510`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 511`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 512`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 513`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 514`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 515`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 516`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 517`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 518`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 519`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 520`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 521`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 522`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 523`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 524`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 525`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 526`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 527`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 528`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 529`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 530`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 531`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 532`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 533`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 534`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 535`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 536`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 537`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 538`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 539`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 540`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 541`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 542`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 543`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 544`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 545`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 546`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 547`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 548`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 549`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 550`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 551`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 552`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 553`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 554`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 555`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 556`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 557`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 558`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 559`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 560`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 561`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 562`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 563`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 564`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 565`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 566`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 567`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 568`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 569`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 570`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 571`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 572`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 573`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 574`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 575`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 576`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 577`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 578`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 579`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 580`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 581`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 582`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 583`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 584`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 585`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 586`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 587`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 588`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 589`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 590`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 591`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 592`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 593`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 594`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 595`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 596`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 597`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 598`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 599`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 600`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 601`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 602`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 603`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 604`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 605`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 606`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 607`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 608`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 609`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 610`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 611`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 612`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; + +exports[`Raw @cubejs-backend/mysql-driver must select from the data source 613`] = ` +Object { + "date_val": Anything, + "retail_date_prev_month": AnyOrNull, + "retail_date_prev_quarter": AnyOrNull, + "retail_date_prev_year": AnyOrNull, + "retail_month_begin_date": Anything, + "retail_month_name": Any, + "retail_quarter_begin_date": Anything, + "retail_quarter_name": Any, + "retail_week_begin_date": Anything, + "retail_week_name": Any, + "retail_year_begin_date": Anything, + "retail_year_name": Any, +} +`; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/mysql-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/mysql-full.test.ts.snap index 7832bfb4139e2..8f5f090fe90ee 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/mysql-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/mysql-full.test.ts.snap @@ -8053,14 +8053,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, + "ECommerce.profit": "21.09800", "ECommerce.quantity": 2, "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, Object { @@ -8068,14 +8068,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, + "ECommerce.profit": "-3.35060", "ECommerce.quantity": 2, "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, ] @@ -8088,14 +8088,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, + "ECommerce.profit": "21.09800", "ECommerce.quantity": 2, "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, Object { @@ -8103,14 +8103,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, + "ECommerce.profit": "8.55680", "ECommerce.quantity": 4, "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8118,14 +8118,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, + "ECommerce.profit": "3.66320", "ECommerce.quantity": 2, "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8133,14 +8133,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, + "ECommerce.profit": "10.39040", "ECommerce.quantity": 2, "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8148,14 +8148,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, + "ECommerce.profit": "-3.35060", "ECommerce.quantity": 2, "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, Object { @@ -8163,14 +8163,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, + "ECommerce.profit": "1.73520", "ECommerce.quantity": 2, "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8178,14 +8178,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, + "ECommerce.profit": "6.41760", "ECommerce.quantity": 3, "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8193,14 +8193,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.60000", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, + "ECommerce.profit": "-19.86400", "ECommerce.quantity": 5, "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, ] @@ -8215,14 +8215,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, + "ECommerce.profit": "1.73520", "ECommerce.quantity": 2, "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8230,14 +8230,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.50000", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, + "ECommerce.profit": "-7.20000", "ECommerce.quantity": 2, "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, ] @@ -8250,14 +8250,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, + "ECommerce.profit": "21.09800", "ECommerce.quantity": 2, "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, Object { @@ -8265,14 +8265,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, + "ECommerce.profit": "3.66320", "ECommerce.quantity": 2, "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8280,14 +8280,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, + "ECommerce.profit": "5.20260", "ECommerce.quantity": 3, "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, Object { @@ -8295,14 +8295,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, + "ECommerce.profit": "494.97250", "ECommerce.quantity": 11, "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, Object { @@ -8310,14 +8310,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, + "ECommerce.profit": "10.39040", "ECommerce.quantity": 2, "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8325,14 +8325,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, + "ECommerce.profit": "-3.35060", "ECommerce.quantity": 2, "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, Object { @@ -8340,14 +8340,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, + "ECommerce.profit": "2.72600", "ECommerce.quantity": 5, "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, Object { @@ -8355,14 +8355,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, + "ECommerce.profit": "3.92960", "ECommerce.quantity": 4, "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, Object { @@ -8370,14 +8370,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, + "ECommerce.profit": "8.50250", "ECommerce.quantity": 5, "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, Object { @@ -8385,14 +8385,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -8400,14 +8400,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, + "ECommerce.profit": "0.70650", "ECommerce.quantity": 3, "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -8415,14 +8415,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, + "ECommerce.profit": "129.29400", "ECommerce.quantity": 5, "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, ] @@ -8437,14 +8437,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, + "ECommerce.profit": "77.57640", "ECommerce.quantity": 3, "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -8452,14 +8452,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, + "ECommerce.profit": "2.72600", "ECommerce.quantity": 5, "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, Object { @@ -8467,14 +8467,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -8482,14 +8482,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, ] @@ -8502,14 +8502,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, + "ECommerce.profit": "81.43200", "ECommerce.quantity": 2, "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, Object { @@ -8517,14 +8517,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, + "ECommerce.profit": "77.57640", "ECommerce.quantity": 3, "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -8532,14 +8532,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, + "ECommerce.profit": "2.72600", "ECommerce.quantity": 5, "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, Object { @@ -8547,14 +8547,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -8562,14 +8562,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, + "ECommerce.profit": "44.97500", "ECommerce.quantity": 5, "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, Object { @@ -8577,14 +8577,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -8592,14 +8592,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, + "ECommerce.profit": "15.49800", "ECommerce.quantity": 5, "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -8607,14 +8607,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, + "ECommerce.profit": "6.41760", "ECommerce.quantity": 3, "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8622,14 +8622,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, + "ECommerce.profit": "467.99220", "ECommerce.quantity": 2, "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, Object { @@ -8637,14 +8637,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.40000", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, + "ECommerce.profit": "74.99850", "ECommerce.quantity": 3, "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, Object { @@ -8652,14 +8652,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, + "ECommerce.profit": "5.39700", "ECommerce.quantity": 3, "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, ] @@ -9504,52 +9504,52 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 210.98, + "BigECommerce.totalSales": "210.98000", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", - "BigECommerce.totalSales": 18.368, + "BigECommerce.totalSales": "18.36800", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", - "BigECommerce.totalSales": 2471.56, + "BigECommerce.totalSales": "2471.56000", }, Object { "BigECommerce.orderDate": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", - "BigECommerce.totalSales": 36.672, + "BigECommerce.totalSales": "36.67200", }, Object { "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", - "BigECommerce.totalSales": 1284.45, + "BigECommerce.totalSales": "1284.45000", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", - "BigECommerce.totalSales": 724.974, + "BigECommerce.totalSales": "724.97400", }, Object { "BigECommerce.orderDate": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", - "BigECommerce.totalSales": 2451.472, + "BigECommerce.totalSales": "2451.47200", }, Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.totalSales": 2209.828, + "BigECommerce.totalSales": "2209.82800", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", - "BigECommerce.totalSales": 5573.922, + "BigECommerce.totalSales": "5573.92200", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 2073.63, + "BigECommerce.totalSales": "2073.63000", }, ] `; @@ -10180,427 +10180,427 @@ Array [ "BigECommerce.orderDate.day": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-02T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-02T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-03T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-03T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-04T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-04T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-05T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-05T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-06T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-06T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-07T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-07T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-08T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-08T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-09T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-09T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-10T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-10T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-11T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-11T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-12T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-12T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-13T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-13T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-14T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-14T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-15T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-15T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-16T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-16T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-17T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-17T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-18T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-18T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-19T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-19T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-20T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-20T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-21T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-21T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-22T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-22T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-23T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-23T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-24T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-25T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-25T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-26T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-28T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-29T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-30T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-31T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-31T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-02T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-02T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-03T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-03T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-04T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-04T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-05T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-05T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-06T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-06T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-07T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-07T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-08T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-08T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-09T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-09T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-10T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-10T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-11T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-11T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-12T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-12T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-13T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-13T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-14T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-14T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-15T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-15T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-16T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-16T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-17T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-17T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-18T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-18T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-19T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-19T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-20T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-20T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-21T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-21T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-22T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-22T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-23T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-23T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-25T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-25T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-26T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-27T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-28T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-29T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.day": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, ] `; @@ -10612,427 +10612,427 @@ Array [ "BigECommerce.orderDate.day": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-02T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-02T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-03T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-03T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-04T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-04T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-05T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-05T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-06T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-06T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-07T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-07T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-08T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-08T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-09T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-09T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-10T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-10T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-11T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-11T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-12T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-12T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-13T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-13T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-14T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-14T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-15T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-15T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-16T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-16T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-17T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-17T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-18T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-18T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-19T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-19T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-20T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-20T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-21T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-21T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-22T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-22T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-23T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-23T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-24T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-25T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-25T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-26T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-28T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-29T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-30T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-31T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-31T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-02T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-02T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-03T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-03T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-04T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-04T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-05T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-05T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-06T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-06T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-07T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-07T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-08T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-08T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-09T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-09T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-10T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-10T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-11T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-11T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-12T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-12T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-13T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-13T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-14T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-14T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-15T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-15T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-16T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-16T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-17T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-17T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-18T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-18T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-19T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-19T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-20T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-20T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-21T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-21T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-22T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-22T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-23T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-23T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-25T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-25T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-26T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-27T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-28T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-29T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.day": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, ] `; @@ -11043,73 +11043,73 @@ Array [ "BigECommerce.orderDate": "2019-12-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 5, + "BigECommerce.rollingCountYTD": "5", }, Object { "BigECommerce.orderDate": "2020-03-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-03-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 6, + "BigECommerce.rollingCountYTD": "6", }, Object { "BigECommerce.orderDate": "2020-04-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-04-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 11, + "BigECommerce.rollingCountYTD": "11", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-06-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-06-29T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-07-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-07-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-08-31T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-08-31T00:00:00.000", - "BigECommerce.rollingCountYTD": 24, + "BigECommerce.rollingCountYTD": "24", }, Object { "BigECommerce.orderDate": "2020-09-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-09-28T00:00:00.000", - "BigECommerce.rollingCountYTD": 28, + "BigECommerce.rollingCountYTD": "28", }, Object { "BigECommerce.orderDate": "2020-10-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-10-26T00:00:00.000", - "BigECommerce.rollingCountYTD": 37, + "BigECommerce.rollingCountYTD": "37", }, Object { "BigECommerce.orderDate": "2020-11-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-11-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 44, + "BigECommerce.rollingCountYTD": "44", }, ] `; @@ -11120,73 +11120,73 @@ Array [ "BigECommerce.orderDate": "2019-12-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 5, + "BigECommerce.rollingCountYTD": "5", }, Object { "BigECommerce.orderDate": "2020-03-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-03-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 6, + "BigECommerce.rollingCountYTD": "6", }, Object { "BigECommerce.orderDate": "2020-04-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-04-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 11, + "BigECommerce.rollingCountYTD": "11", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-06-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-06-29T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-07-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-07-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-08-31T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-08-31T00:00:00.000", - "BigECommerce.rollingCountYTD": 24, + "BigECommerce.rollingCountYTD": "24", }, Object { "BigECommerce.orderDate": "2020-09-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-09-28T00:00:00.000", - "BigECommerce.rollingCountYTD": 28, + "BigECommerce.rollingCountYTD": "28", }, Object { "BigECommerce.orderDate": "2020-10-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-10-26T00:00:00.000", - "BigECommerce.rollingCountYTD": 37, + "BigECommerce.rollingCountYTD": "37", }, Object { "BigECommerce.orderDate": "2020-11-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-11-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 44, + "BigECommerce.rollingCountYTD": "44", }, ] `; @@ -11196,62 +11196,62 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 5, + "BigECommerce.rollingCountYTD": "5", }, Object { "BigECommerce.orderDate": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 6, + "BigECommerce.rollingCountYTD": "6", }, Object { "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 11, + "BigECommerce.rollingCountYTD": "11", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-08-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 24, + "BigECommerce.rollingCountYTD": "24", }, Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 28, + "BigECommerce.rollingCountYTD": "28", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 37, + "BigECommerce.rollingCountYTD": "37", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 44, + "BigECommerce.rollingCountYTD": "44", }, ] `; @@ -11379,7 +11379,7 @@ Array [ Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountBy2Day": 1, + "BigECommerce.rollingCountBy2Day": "1", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", @@ -11464,37 +11464,37 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 2, + "BigECommerce.rollingCountBy2Month": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 3, + "BigECommerce.rollingCountBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 3, + "BigECommerce.rollingCountBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 3, + "BigECommerce.rollingCountBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 6, + "BigECommerce.rollingCountBy2Month": "6", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 12, + "BigECommerce.rollingCountBy2Month": "12", }, Object { "BigECommerce.orderDate": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 7, + "BigECommerce.rollingCountBy2Month": "7", }, Object { "BigECommerce.orderDate": "2020-08-01T00:00:00.000", @@ -11504,22 +11504,22 @@ Array [ Object { "BigECommerce.orderDate": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 6, + "BigECommerce.rollingCountBy2Month": "6", }, Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 10, + "BigECommerce.rollingCountBy2Month": "10", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 13, + "BigECommerce.rollingCountBy2Month": "13", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 16, + "BigECommerce.rollingCountBy2Month": "16", }, ] `; @@ -11594,17 +11594,17 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 1, + "BigECommerce.rollingCountBy2Week": "1", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 1, + "BigECommerce.rollingCountBy2Week": "1", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 1, + "BigECommerce.rollingCountBy2Week": "1", }, Object { "BigECommerce.orderDate": "2020-04-01T00:00:00.000", @@ -11614,12 +11614,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 2, + "BigECommerce.rollingCountBy2Week": "2", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 3, + "BigECommerce.rollingCountBy2Week": "3", }, Object { "BigECommerce.orderDate": "2020-07-01T00:00:00.000", @@ -11634,22 +11634,22 @@ Array [ Object { "BigECommerce.orderDate": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 3, + "BigECommerce.rollingCountBy2Week": "3", }, Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 3, + "BigECommerce.rollingCountBy2Week": "3", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 2, + "BigECommerce.rollingCountBy2Week": "2", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.rollingCountBy2Week": 2, + "BigECommerce.rollingCountBy2Week": "2", }, ] `; @@ -11662,32 +11662,32 @@ Array [ "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 2, + "BigECommerce.customersCountPrev1Month": "2", "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 1, + "BigECommerce.customersCountPrev1Month": "1", "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 2, + "BigECommerce.customersCountPrev1Month": "2", "BigECommerce.orderDate": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 1, + "BigECommerce.customersCountPrev1Month": "1", "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 5, + "BigECommerce.customersCountPrev1Month": "5", "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 7, + "BigECommerce.customersCountPrev1Month": "7", "BigECommerce.orderDate": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", }, @@ -11702,17 +11702,17 @@ Array [ "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 6, + "BigECommerce.customersCountPrev1Month": "6", "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 4, + "BigECommerce.customersCountPrev1Month": "4", "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 9, + "BigECommerce.customersCountPrev1Month": "9", "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", }, @@ -12481,6 +12481,61 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/mysql-driver querying ECommerce: count by month + order with non-UTC timezone (Asia/Kolkata) 1`] = ` +Array [ + Object { + "ECommerce.count": 2, + "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-01-01T00:00:00.000", + }, + Object { + "ECommerce.count": 1, + "ECommerce.customOrderDateNoPreAgg": "2020-02-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-02-01T00:00:00.000", + }, + Object { + "ECommerce.count": 2, + "ECommerce.customOrderDateNoPreAgg": "2020-03-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-03-01T00:00:00.000", + }, + Object { + "ECommerce.count": 1, + "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-04-01T00:00:00.000", + }, + Object { + "ECommerce.count": 5, + "ECommerce.customOrderDateNoPreAgg": "2020-05-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-05-01T00:00:00.000", + }, + Object { + "ECommerce.count": 7, + "ECommerce.customOrderDateNoPreAgg": "2020-06-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-06-01T00:00:00.000", + }, + Object { + "ECommerce.count": 6, + "ECommerce.customOrderDateNoPreAgg": "2020-09-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-09-01T00:00:00.000", + }, + Object { + "ECommerce.count": 4, + "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-10-01T00:00:00.000", + }, + Object { + "ECommerce.count": 9, + "ECommerce.customOrderDateNoPreAgg": "2020-11-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-11-01T00:00:00.000", + }, + Object { + "ECommerce.count": 7, + "ECommerce.customOrderDateNoPreAgg": "2020-12-01T00:00:00.000", + "ECommerce.customOrderDateNoPreAgg.month": "2020-12-01T00:00:00.000", + }, +] +`; + exports[`Queries with the @cubejs-backend/mysql-driver querying ECommerce: dimensions + limit 1`] = ` Array [ Object { @@ -12488,14 +12543,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, + "ECommerce.profit": "21.09800", "ECommerce.quantity": 2, "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, Object { @@ -12503,14 +12558,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, + "ECommerce.profit": "8.55680", "ECommerce.quantity": 4, "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12518,14 +12573,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, + "ECommerce.profit": "4.06870", "ECommerce.quantity": 1, "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, Object { @@ -12533,14 +12588,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, + "ECommerce.profit": "3.66320", "ECommerce.quantity": 2, "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12548,14 +12603,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, + "ECommerce.profit": "-2.11950", "ECommerce.quantity": 3, "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12563,14 +12618,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, + "ECommerce.profit": "5.20260", "ECommerce.quantity": 3, "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12578,14 +12633,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, + "ECommerce.profit": "13.60400", "ECommerce.quantity": 8, "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, Object { @@ -12593,14 +12648,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, + "ECommerce.profit": "81.43200", "ECommerce.quantity": 2, "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12608,14 +12663,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, + "ECommerce.profit": "77.57640", "ECommerce.quantity": 3, "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -12623,14 +12678,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, + "ECommerce.profit": "494.97250", "ECommerce.quantity": 11, "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, ] @@ -12643,14 +12698,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, + "ECommerce.profit": "9.96520", "ECommerce.quantity": 2, "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, Object { @@ -12658,14 +12713,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, + "ECommerce.profit": "10.39040", "ECommerce.quantity": 2, "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12673,14 +12728,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, + "ECommerce.profit": "-3.35060", "ECommerce.quantity": 2, "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, Object { @@ -12688,14 +12743,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -12703,14 +12758,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -12718,14 +12773,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, + "ECommerce.profit": "1.17750", "ECommerce.quantity": 5, "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12733,14 +12788,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, + "ECommerce.profit": "2.72600", "ECommerce.quantity": 5, "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, Object { @@ -12748,14 +12803,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, + "ECommerce.profit": "3.92960", "ECommerce.quantity": 4, "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, Object { @@ -12763,14 +12818,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, + "ECommerce.profit": "60.54880", "ECommerce.quantity": 4, "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, Object { @@ -12778,14 +12833,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, ] @@ -12798,14 +12853,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, + "ECommerce.profit": "21.09800", "ECommerce.quantity": 2, "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, Object { @@ -12813,14 +12868,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, + "ECommerce.profit": "8.55680", "ECommerce.quantity": 4, "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12828,14 +12883,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, + "ECommerce.profit": "4.06870", "ECommerce.quantity": 1, "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, Object { @@ -12843,14 +12898,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, + "ECommerce.profit": "3.66320", "ECommerce.quantity": 2, "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12858,14 +12913,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, + "ECommerce.profit": "-2.11950", "ECommerce.quantity": 3, "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12873,14 +12928,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, + "ECommerce.profit": "5.20260", "ECommerce.quantity": 3, "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12888,14 +12943,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, + "ECommerce.profit": "13.60400", "ECommerce.quantity": 8, "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, Object { @@ -12903,14 +12958,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, + "ECommerce.profit": "81.43200", "ECommerce.quantity": 2, "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12918,14 +12973,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, + "ECommerce.profit": "77.57640", "ECommerce.quantity": 3, "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -12933,14 +12988,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, + "ECommerce.profit": "494.97250", "ECommerce.quantity": 11, "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, ] @@ -12953,14 +13008,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, + "ECommerce.profit": "21.09800", "ECommerce.quantity": 2, "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, Object { @@ -12968,14 +13023,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, + "ECommerce.profit": "8.55680", "ECommerce.quantity": 4, "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12983,14 +13038,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, + "ECommerce.profit": "4.06870", "ECommerce.quantity": 1, "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, Object { @@ -12998,14 +13053,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, + "ECommerce.profit": "3.66320", "ECommerce.quantity": 2, "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13013,14 +13068,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, + "ECommerce.profit": "-2.11950", "ECommerce.quantity": 3, "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13028,14 +13083,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, + "ECommerce.profit": "5.20260", "ECommerce.quantity": 3, "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, Object { @@ -13043,14 +13098,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, + "ECommerce.profit": "13.60400", "ECommerce.quantity": 8, "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, Object { @@ -13058,14 +13113,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, + "ECommerce.profit": "81.43200", "ECommerce.quantity": 2, "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, Object { @@ -13073,14 +13128,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, + "ECommerce.profit": "77.57640", "ECommerce.quantity": 3, "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13088,14 +13143,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, + "ECommerce.profit": "494.97250", "ECommerce.quantity": 11, "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, Object { @@ -13103,14 +13158,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, + "ECommerce.profit": "9.96520", "ECommerce.quantity": 2, "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, Object { @@ -13118,14 +13173,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, + "ECommerce.profit": "10.39040", "ECommerce.quantity": 2, "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13133,14 +13188,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, + "ECommerce.profit": "-3.35060", "ECommerce.quantity": 2, "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, Object { @@ -13148,14 +13203,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -13163,14 +13218,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -13178,14 +13233,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, + "ECommerce.profit": "1.17750", "ECommerce.quantity": 5, "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13193,14 +13248,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, + "ECommerce.profit": "2.72600", "ECommerce.quantity": 5, "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, Object { @@ -13208,14 +13263,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, + "ECommerce.profit": "3.92960", "ECommerce.quantity": 4, "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, Object { @@ -13223,14 +13278,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, + "ECommerce.profit": "60.54880", "ECommerce.quantity": 4, "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, Object { @@ -13238,14 +13293,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -13253,14 +13308,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, + "ECommerce.profit": "21.58240", "ECommerce.quantity": 4, "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13268,14 +13323,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, + "ECommerce.profit": "517.47930", "ECommerce.quantity": 9, "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, Object { @@ -13283,14 +13338,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, + "ECommerce.profit": "134.53020", "ECommerce.quantity": 7, "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, Object { @@ -13298,14 +13353,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, + "ECommerce.profit": "8.50250", "ECommerce.quantity": 5, "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, Object { @@ -13313,14 +13368,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, + "ECommerce.profit": "8.50250", "ECommerce.quantity": 5, "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, Object { @@ -13328,14 +13383,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, + "ECommerce.profit": "1.73520", "ECommerce.quantity": 2, "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13343,14 +13398,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, + "ECommerce.profit": "44.97500", "ECommerce.quantity": 5, "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, Object { @@ -13358,14 +13413,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -13373,14 +13428,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, + "ECommerce.profit": "15.49800", "ECommerce.quantity": 5, "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13388,14 +13443,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, + "ECommerce.profit": "569.99050", "ECommerce.quantity": 5, "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, Object { @@ -13403,14 +13458,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.50000", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, + "ECommerce.profit": "-272.58000", "ECommerce.quantity": 2, "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -13418,14 +13473,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, + "ECommerce.profit": "0.70650", "ECommerce.quantity": 3, "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13433,14 +13488,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, + "ECommerce.profit": "6.41760", "ECommerce.quantity": 3, "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13448,14 +13503,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, + "ECommerce.profit": "467.99220", "ECommerce.quantity": 2, "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, Object { @@ -13463,14 +13518,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, + "ECommerce.profit": "129.29400", "ECommerce.quantity": 5, "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13478,14 +13533,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.60000", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, + "ECommerce.profit": "-19.86400", "ECommerce.quantity": 5, "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13493,14 +13548,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, + "ECommerce.profit": "6.19920", "ECommerce.quantity": 2, "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13508,14 +13563,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, + "ECommerce.profit": "26.99730", "ECommerce.quantity": 3, "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, Object { @@ -13523,14 +13578,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, + "ECommerce.profit": "225.60000", "ECommerce.quantity": 4, "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -13538,14 +13593,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.50000", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, + "ECommerce.profit": "-7.20000", "ECommerce.quantity": 2, "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -13553,14 +13608,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.10000", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, + "ECommerce.profit": "24.20120", "ECommerce.quantity": 2, "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, Object { @@ -13568,14 +13623,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, + "ECommerce.profit": "-5.00980", "ECommerce.quantity": 1, "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13583,14 +13638,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.40000", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, + "ECommerce.profit": "74.99850", "ECommerce.quantity": 3, "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, Object { @@ -13598,14 +13653,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, + "ECommerce.profit": "5.39700", "ECommerce.quantity": 3, "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, ] @@ -13618,14 +13673,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, + "ECommerce.profit": "21.09800", "ECommerce.quantity": 2, "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, Object { @@ -13633,14 +13688,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, + "ECommerce.profit": "8.55680", "ECommerce.quantity": 4, "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13648,14 +13703,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, + "ECommerce.profit": "4.06870", "ECommerce.quantity": 1, "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, Object { @@ -13663,14 +13718,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, + "ECommerce.profit": "3.66320", "ECommerce.quantity": 2, "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13678,14 +13733,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, + "ECommerce.profit": "-2.11950", "ECommerce.quantity": 3, "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13693,14 +13748,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, + "ECommerce.profit": "5.20260", "ECommerce.quantity": 3, "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, Object { @@ -13708,14 +13763,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, + "ECommerce.profit": "13.60400", "ECommerce.quantity": 8, "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, Object { @@ -13723,14 +13778,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, + "ECommerce.profit": "81.43200", "ECommerce.quantity": 2, "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, Object { @@ -13738,14 +13793,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, + "ECommerce.profit": "77.57640", "ECommerce.quantity": 3, "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13753,14 +13808,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, + "ECommerce.profit": "494.97250", "ECommerce.quantity": 11, "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, Object { @@ -13768,14 +13823,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, + "ECommerce.profit": "9.96520", "ECommerce.quantity": 2, "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, Object { @@ -13783,14 +13838,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, + "ECommerce.profit": "10.39040", "ECommerce.quantity": 2, "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13798,14 +13853,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, + "ECommerce.profit": "-3.35060", "ECommerce.quantity": 2, "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, Object { @@ -13813,14 +13868,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -13828,14 +13883,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -13843,14 +13898,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, + "ECommerce.profit": "1.17750", "ECommerce.quantity": 5, "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13858,14 +13913,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, + "ECommerce.profit": "2.72600", "ECommerce.quantity": 5, "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, Object { @@ -13873,14 +13928,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, + "ECommerce.profit": "3.92960", "ECommerce.quantity": 4, "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, Object { @@ -13888,14 +13943,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, + "ECommerce.profit": "60.54880", "ECommerce.quantity": 4, "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, Object { @@ -13903,14 +13958,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -13918,14 +13973,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, + "ECommerce.profit": "21.58240", "ECommerce.quantity": 4, "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13933,14 +13988,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, + "ECommerce.profit": "517.47930", "ECommerce.quantity": 9, "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, Object { @@ -13948,14 +14003,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, + "ECommerce.profit": "134.53020", "ECommerce.quantity": 7, "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, Object { @@ -13963,14 +14018,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, + "ECommerce.profit": "8.50250", "ECommerce.quantity": 5, "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, Object { @@ -13978,14 +14033,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, + "ECommerce.profit": "8.50250", "ECommerce.quantity": 5, "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, Object { @@ -13993,14 +14048,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, + "ECommerce.profit": "1.73520", "ECommerce.quantity": 2, "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14008,14 +14063,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, + "ECommerce.profit": "44.97500", "ECommerce.quantity": 5, "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, Object { @@ -14023,14 +14078,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -14038,14 +14093,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, + "ECommerce.profit": "15.49800", "ECommerce.quantity": 5, "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14053,14 +14108,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, + "ECommerce.profit": "569.99050", "ECommerce.quantity": 5, "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, Object { @@ -14068,14 +14123,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.50000", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, + "ECommerce.profit": "-272.58000", "ECommerce.quantity": 2, "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -14083,14 +14138,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, + "ECommerce.profit": "0.70650", "ECommerce.quantity": 3, "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14098,14 +14153,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, + "ECommerce.profit": "6.41760", "ECommerce.quantity": 3, "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14113,14 +14168,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, + "ECommerce.profit": "467.99220", "ECommerce.quantity": 2, "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, Object { @@ -14128,14 +14183,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, + "ECommerce.profit": "129.29400", "ECommerce.quantity": 5, "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -14143,14 +14198,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.60000", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, + "ECommerce.profit": "-19.86400", "ECommerce.quantity": 5, "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14158,14 +14213,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, + "ECommerce.profit": "6.19920", "ECommerce.quantity": 2, "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14173,14 +14228,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, + "ECommerce.profit": "26.99730", "ECommerce.quantity": 3, "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, Object { @@ -14188,14 +14243,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, + "ECommerce.profit": "225.60000", "ECommerce.quantity": 4, "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -14203,14 +14258,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.50000", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, + "ECommerce.profit": "-7.20000", "ECommerce.quantity": 2, "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -14218,14 +14273,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.10000", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, + "ECommerce.profit": "24.20120", "ECommerce.quantity": 2, "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, Object { @@ -14233,14 +14288,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, + "ECommerce.profit": "-5.00980", "ECommerce.quantity": 1, "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, Object { @@ -14248,14 +14303,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.40000", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, + "ECommerce.profit": "74.99850", "ECommerce.quantity": 3, "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, Object { @@ -14263,14 +14318,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, + "ECommerce.profit": "5.39700", "ECommerce.quantity": 3, "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, ] @@ -14283,14 +14338,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, + "ECommerce.profit": "21.09800", "ECommerce.quantity": 2, "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, Object { @@ -14298,14 +14353,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, + "ECommerce.profit": "8.55680", "ECommerce.quantity": 4, "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14313,14 +14368,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, + "ECommerce.profit": "4.06870", "ECommerce.quantity": 1, "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, Object { @@ -14328,14 +14383,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, + "ECommerce.profit": "3.66320", "ECommerce.quantity": 2, "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14343,14 +14398,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, + "ECommerce.profit": "-2.11950", "ECommerce.quantity": 3, "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14358,14 +14413,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, + "ECommerce.profit": "5.20260", "ECommerce.quantity": 3, "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, Object { @@ -14373,14 +14428,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, + "ECommerce.profit": "13.60400", "ECommerce.quantity": 8, "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, Object { @@ -14388,14 +14443,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, + "ECommerce.profit": "81.43200", "ECommerce.quantity": 2, "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, Object { @@ -14403,14 +14458,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, + "ECommerce.profit": "77.57640", "ECommerce.quantity": 3, "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -14418,14 +14473,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, + "ECommerce.profit": "494.97250", "ECommerce.quantity": 11, "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, Object { @@ -14433,14 +14488,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, + "ECommerce.profit": "9.96520", "ECommerce.quantity": 2, "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, Object { @@ -14448,14 +14503,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, + "ECommerce.profit": "10.39040", "ECommerce.quantity": 2, "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14463,14 +14518,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, + "ECommerce.profit": "-3.35060", "ECommerce.quantity": 2, "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, Object { @@ -14478,14 +14533,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -14493,14 +14548,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -14508,14 +14563,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, + "ECommerce.profit": "1.17750", "ECommerce.quantity": 5, "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14523,14 +14578,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, + "ECommerce.profit": "2.72600", "ECommerce.quantity": 5, "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, Object { @@ -14538,14 +14593,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, + "ECommerce.profit": "3.92960", "ECommerce.quantity": 4, "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, Object { @@ -14553,14 +14608,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, + "ECommerce.profit": "60.54880", "ECommerce.quantity": 4, "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, Object { @@ -14568,14 +14623,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, + "ECommerce.profit": "134.99250", "ECommerce.quantity": 3, "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, Object { @@ -14583,14 +14638,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, + "ECommerce.profit": "21.58240", "ECommerce.quantity": 4, "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14598,14 +14653,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, + "ECommerce.profit": "517.47930", "ECommerce.quantity": 9, "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, Object { @@ -14613,14 +14668,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, + "ECommerce.profit": "134.53020", "ECommerce.quantity": 7, "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, Object { @@ -14628,14 +14683,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, + "ECommerce.profit": "8.50250", "ECommerce.quantity": 5, "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, Object { @@ -14643,14 +14698,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, + "ECommerce.profit": "8.50250", "ECommerce.quantity": 5, "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, Object { @@ -14658,14 +14713,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, + "ECommerce.profit": "1.73520", "ECommerce.quantity": 2, "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14673,14 +14728,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, + "ECommerce.profit": "44.97500", "ECommerce.quantity": 5, "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, Object { @@ -14688,14 +14743,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, + "ECommerce.profit": "1.09040", "ECommerce.quantity": 2, "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, Object { @@ -14703,14 +14758,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, + "ECommerce.profit": "15.49800", "ECommerce.quantity": 5, "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14718,14 +14773,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, + "ECommerce.profit": "569.99050", "ECommerce.quantity": 5, "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, Object { @@ -14733,14 +14788,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.50000", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, + "ECommerce.profit": "-272.58000", "ECommerce.quantity": 2, "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -14748,14 +14803,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, + "ECommerce.profit": "0.70650", "ECommerce.quantity": 3, "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14763,14 +14818,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, + "ECommerce.profit": "6.41760", "ECommerce.quantity": 3, "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14778,14 +14833,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, + "ECommerce.profit": "467.99220", "ECommerce.quantity": 2, "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, Object { @@ -14793,14 +14848,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, + "ECommerce.profit": "129.29400", "ECommerce.quantity": 5, "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, Object { @@ -14808,14 +14863,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.60000", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, + "ECommerce.profit": "-19.86400", "ECommerce.quantity": 5, "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14823,14 +14878,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, + "ECommerce.profit": "6.19920", "ECommerce.quantity": 2, "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14838,14 +14893,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, + "ECommerce.profit": "26.99730", "ECommerce.quantity": 3, "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, Object { @@ -14853,14 +14908,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0.00000", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, + "ECommerce.profit": "225.60000", "ECommerce.quantity": 4, "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -14868,14 +14923,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.50000", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, + "ECommerce.profit": "-7.20000", "ECommerce.quantity": 2, "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, Object { @@ -14883,14 +14938,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.10000", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, + "ECommerce.profit": "24.20120", "ECommerce.quantity": 2, "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, Object { @@ -14898,14 +14953,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, + "ECommerce.profit": "-5.00980", "ECommerce.quantity": 1, "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, Object { @@ -14913,14 +14968,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.40000", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, + "ECommerce.profit": "74.99850", "ECommerce.quantity": 3, "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, Object { @@ -14928,14 +14983,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.20000", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, + "ECommerce.profit": "5.39700", "ECommerce.quantity": 3, "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, ] @@ -16931,27 +16986,27 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 8, + "ECommerce.rollingCountByLeading": "8", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 12, + "ECommerce.rollingCountByLeading": "12", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 6, + "ECommerce.rollingCountByLeading": "6", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 19, + "ECommerce.rollingCountByLeading": "19", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 16, + "ECommerce.rollingCountByLeading": "16", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", @@ -17011,17 +17066,17 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 3, + "ECommerce.rollingCountByTrailing": "3", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 3, + "ECommerce.rollingCountByTrailing": "3", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 12, + "ECommerce.rollingCountByTrailing": "12", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", @@ -17031,12 +17086,12 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 10, + "ECommerce.rollingCountByTrailing": "10", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 16, + "ECommerce.rollingCountByTrailing": "16", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", @@ -17051,92 +17106,37 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 3, + "ECommerce.rollingCountByUnbounded": "3", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 6, + "ECommerce.rollingCountByUnbounded": "6", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 18, + "ECommerce.rollingCountByUnbounded": "18", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 18, + "ECommerce.rollingCountByUnbounded": "18", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 28, + "ECommerce.rollingCountByUnbounded": "28", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 44, + "ECommerce.rollingCountByUnbounded": "44", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 44, - }, -] -`; - -exports[`Queries with the @cubejs-backend/mysql-driver querying ECommerce: count by month + order with non-UTC timezone (Asia/Kolkata) 1`] = ` -Array [ - Object { - "ECommerce.count": 2, - "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-01-01T00:00:00.000", - }, - Object { - "ECommerce.count": 1, - "ECommerce.customOrderDateNoPreAgg": "2020-02-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-02-01T00:00:00.000", - }, - Object { - "ECommerce.count": 2, - "ECommerce.customOrderDateNoPreAgg": "2020-03-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-03-01T00:00:00.000", - }, - Object { - "ECommerce.count": 1, - "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-04-01T00:00:00.000", - }, - Object { - "ECommerce.count": 5, - "ECommerce.customOrderDateNoPreAgg": "2020-05-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-05-01T00:00:00.000", - }, - Object { - "ECommerce.count": 7, - "ECommerce.customOrderDateNoPreAgg": "2020-06-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-06-01T00:00:00.000", - }, - Object { - "ECommerce.count": 6, - "ECommerce.customOrderDateNoPreAgg": "2020-09-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-09-01T00:00:00.000", - }, - Object { - "ECommerce.count": 4, - "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-10-01T00:00:00.000", - }, - Object { - "ECommerce.count": 9, - "ECommerce.customOrderDateNoPreAgg": "2020-11-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-11-01T00:00:00.000", - }, - Object { - "ECommerce.count": 7, - "ECommerce.customOrderDateNoPreAgg": "2020-12-01T00:00:00.000", - "ECommerce.customOrderDateNoPreAgg.month": "2020-12-01T00:00:00.000", + "ECommerce.rollingCountByUnbounded": "44", }, ] `; From 78ddac22db3258f2f2cf60bb772ae90aa1cb0282 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Wed, 27 May 2026 14:28:55 +0200 Subject: [PATCH 19/24] feat(cubeorchestrator): Use Arrow format for CubeStore response format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(cubeorchestrator): parse time strings with variable-length fraction `transform_value` normalized time-typed strings using the fixed-width `%.3f` parse format. Since chrono 0.4.42 (PR #1705) `%.3f` requires exactly three fractional digits on parse, so a timestamp string carrying a different count — e.g. the JDBC bridge's `java.sql.Timestamp::toString()` rendering `2020-04-01 00:00:00.0` — fails to parse and falls through unnormalized, leaking `2020-04-01 00:00:00.0` instead of `2020-04-01T00:00:00.000`. The chrono bump rode in with the new Arrow crates on this branch; the parse block itself was unchanged. Switch the parse formats to `%.f` (variable-length fraction), which accepts any digit count (including none) in every chrono version. The output is still reformatted to `%.3f`, so normalized values are unchanged. feat(cubeorchestrator): support Decimal32 and Decimal64 arrow arrays chore: try to fix chore: decimal formatting chore: tmp chore: fix --- packages/cubejs-backend-native/Cargo.lock | 394 ++++++++-- .../cubejs-backend-native/src/orchestrator.rs | 5 +- .../codegen/http-command.ts | 14 +- .../codegen/http-query-result-arrow.ts | 81 ++ .../codegen/http-query-result-data.ts | 34 + .../codegen/http-query-result.ts | 62 ++ .../codegen/http-query.ts | 15 +- .../cubejs-cubestore-driver/codegen/index.ts | 4 + .../codegen/query-result-format.ts | 8 + .../src/CubeStoreDriver.ts | 30 +- .../src/WebSocketConnection.ts | 17 +- rust/cube/Cargo.lock | 1 + rust/cube/cubeorchestrator/Cargo.toml | 1 + .../cubeorchestrator/benches/common/mod.rs | 61 +- rust/cube/cubeorchestrator/benches/parser.rs | 101 ++- .../src/query_message_parser.rs | 720 +++++++++++++++--- .../src/query_result_transform.rs | 109 ++- 17 files changed, 1491 insertions(+), 166 deletions(-) create mode 100644 packages/cubejs-cubestore-driver/codegen/http-query-result-arrow.ts create mode 100644 packages/cubejs-cubestore-driver/codegen/http-query-result-data.ts create mode 100644 packages/cubejs-cubestore-driver/codegen/http-query-result.ts create mode 100644 packages/cubejs-cubestore-driver/codegen/query-result-format.ts diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index 945f3e8f04858..ac55757514607 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -45,9 +45,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "const-random", + "getrandom 0.2.11", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.32", ] [[package]] @@ -65,12 +67,6 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -115,11 +111,11 @@ dependencies = [ "comfy-table 5.0.1", "csv", "flatbuffers 2.1.2", - "half", + "half 1.8.2", "hex", "indexmap 1.9.3", "lazy_static", - "lexical-core", + "lexical-core 0.8.5", "multiversion", "num", "rand", @@ -130,6 +126,180 @@ dependencies = [ "serde_json", ] +[[package]] +name = "arrow" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "378530e55cd479eda3c14eb345310799717e6f76d0c332041e8487022166b471" +dependencies = [ + "arrow-arith", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-ipc", + "arrow-ord", + "arrow-row", + "arrow-schema", + "arrow-select", + "arrow-string", +] + +[[package]] +name = "arrow-arith" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0ab212d2c1886e802f51c5212d78ebbcbb0bec980fff9dadc1eb8d45cd0b738" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "chrono", + "num-traits", +] + +[[package]] +name = "arrow-array" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd33d3e92f207444098c75b42de99d329562be0cf686b307b097cc52b4e999e" +dependencies = [ + "ahash 0.8.11", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "chrono", + "half 2.7.1", + "hashbrown 0.17.0", + "num-complex", + "num-integer", + "num-traits", +] + +[[package]] +name = "arrow-buffer" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6cd424c2693bcdbc150d843dc9d4d137dd2de4782ce6df491ad11a3a0416c0" +dependencies = [ + "bytes", + "half 2.7.1", + "num-bigint", + "num-traits", +] + +[[package]] +name = "arrow-cast" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c5aefb56a2c02e9e2b30746241058b85f8983f0fcff2ba0c6d09006e1cded7f" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-ord", + "arrow-schema", + "arrow-select", + "atoi", + "base64 0.22.1", + "chrono", + "half 2.7.1", + "lexical-core 1.0.6", + "num-traits", + "ryu", +] + +[[package]] +name = "arrow-data" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c88210023a2bfee1896af366309a3028fc3bcbd6515fa29a7990ee1baa08ee0" +dependencies = [ + "arrow-buffer", + "arrow-schema", + "half 2.7.1", + "num-integer", + "num-traits", +] + +[[package]] +name = "arrow-ipc" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238438f0834483703d88896db6fe5a7138b2230debc31b34c0336c2996e3c64f" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "flatbuffers 25.12.19", +] + +[[package]] +name = "arrow-ord" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bffd8fd2579286a5d63bac898159873e5094a79009940bcb42bbfce4f19f1d0" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", +] + +[[package]] +name = "arrow-row" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab5994731204603c73ba69267616c50f80780774c6bb0476f1f830625115e0c" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "half 2.7.1", +] + +[[package]] +name = "arrow-schema" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f633dbfdf39c039ada1bf9e34c694816eb71fbb7dc78f613993b7245e078a1ed" + +[[package]] +name = "arrow-select" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd065c54172ac787cf3f2f8d4107e0d3fdc26edba76fdf4f4cc170258942222" +dependencies = [ + "ahash 0.8.11", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "num-traits", +] + +[[package]] +name = "arrow-string" +version = "58.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29dd7cda3ab9692f43a2e4acc444d760cc17b12bb6d8232ddf64e9bab7c06b42" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "memchr", + "num-traits", + "regex", + "regex-syntax 0.8.5", +] + [[package]] name = "async-channel" version = "2.1.1" @@ -187,6 +357,15 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + [[package]] name = "atty" version = "0.2.14" @@ -465,17 +644,16 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-link", ] [[package]] @@ -574,6 +752,26 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.11", + "once_cell", + "tiny-keccak", +] + [[package]] name = "constant_time_eq" version = "0.3.0" @@ -659,6 +857,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "crypto-common" version = "0.1.6" @@ -695,7 +899,7 @@ name = "cube-ext" version = "1.0.0" source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" dependencies = [ - "arrow", + "arrow 13.0.0", "chrono", "datafusion-common", "datafusion-expr", @@ -774,6 +978,7 @@ name = "cubeorchestrator" version = "0.1.0" dependencies = [ "anyhow", + "arrow 58.3.0", "chrono", "cubeshared", "indexmap 2.14.0", @@ -871,7 +1076,7 @@ version = "7.0.0" source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" dependencies = [ "ahash 0.7.8", - "arrow", + "arrow 13.0.0", "async-trait", "chrono", "datafusion-common", @@ -903,7 +1108,7 @@ name = "datafusion-common" version = "7.0.0" source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" dependencies = [ - "arrow", + "arrow 13.0.0", "ordered-float 2.10.1", "parquet", "sqlparser", @@ -928,7 +1133,7 @@ version = "7.0.0" source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" dependencies = [ "ahash 0.7.8", - "arrow", + "arrow 13.0.0", "datafusion-common", "sqlparser", ] @@ -939,7 +1144,7 @@ version = "7.0.0" source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" dependencies = [ "ahash 0.7.8", - "arrow", + "arrow 13.0.0", "blake2", "blake3", "chrono", @@ -1306,6 +1511,18 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", + "zerocopy 0.8.27", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1778,11 +1995,24 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", + "lexical-parse-float 0.8.5", + "lexical-parse-integer 0.8.6", + "lexical-util 0.8.5", + "lexical-write-float 0.8.5", + "lexical-write-integer 0.8.5", +] + +[[package]] +name = "lexical-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8d125a277f807e55a77304455eb7b1cb52f2b18c143b60e766c120bd64a594" +dependencies = [ + "lexical-parse-float 1.0.6", + "lexical-parse-integer 1.0.6", + "lexical-util 1.0.7", + "lexical-write-float 1.0.6", + "lexical-write-integer 1.0.6", ] [[package]] @@ -1791,21 +2021,40 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" dependencies = [ - "lexical-parse-integer", - "lexical-util", + "lexical-parse-integer 0.8.6", + "lexical-util 0.8.5", "static_assertions", ] +[[package]] +name = "lexical-parse-float" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a9f232fbd6f550bc0137dcb5f99ab674071ac2d690ac69704593cb4abbea56" +dependencies = [ + "lexical-parse-integer 1.0.6", + "lexical-util 1.0.7", +] + [[package]] name = "lexical-parse-integer" version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" dependencies = [ - "lexical-util", + "lexical-util 0.8.5", "static_assertions", ] +[[package]] +name = "lexical-parse-integer" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a7a039f8fb9c19c996cd7b2fcce303c1b2874fe1aca544edc85c4a5f8489b34" +dependencies = [ + "lexical-util 1.0.7", +] + [[package]] name = "lexical-util" version = "0.8.5" @@ -1815,27 +2064,52 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "lexical-util" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2604dd126bb14f13fb5d1bd6a66155079cb9fa655b37f875b3a742c705dbed17" + [[package]] name = "lexical-write-float" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" dependencies = [ - "lexical-util", - "lexical-write-integer", + "lexical-util 0.8.5", + "lexical-write-integer 0.8.5", "static_assertions", ] +[[package]] +name = "lexical-write-float" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50c438c87c013188d415fbabbb1dceb44249ab81664efbd31b14ae55dabb6361" +dependencies = [ + "lexical-util 1.0.7", + "lexical-write-integer 1.0.6", +] + [[package]] name = "lexical-write-integer" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" dependencies = [ - "lexical-util", + "lexical-util 0.8.5", "static_assertions", ] +[[package]] +name = "lexical-write-integer" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "409851a618475d2d5796377cad353802345cba92c867d9fbcde9cf4eac4e14df" +dependencies = [ + "lexical-util 1.0.7", +] + [[package]] name = "libc" version = "0.2.177" @@ -1939,9 +2213,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memo-map" @@ -2102,20 +2376,19 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -2128,11 +2401,10 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] @@ -2161,11 +2433,12 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -2254,7 +2527,7 @@ name = "parquet" version = "13.0.0" source = "git+https://github.com/cube-js/arrow-rs.git?rev=de57e9799dcfde7bdd02885e63b65e3499f192e5#de57e9799dcfde7bdd02885e63b65e3499f192e5" dependencies = [ - "arrow", + "arrow 13.0.0", "base64 0.13.1", "byteorder", "chrono", @@ -3486,6 +3759,15 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -4052,6 +4334,12 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-sys" version = "0.48.0" @@ -4263,7 +4551,16 @@ version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ - "zerocopy-derive", + "zerocopy-derive 0.7.32", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive 0.8.27", ] [[package]] @@ -4277,6 +4574,17 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "zerofrom" version = "0.1.5" diff --git a/packages/cubejs-backend-native/src/orchestrator.rs b/packages/cubejs-backend-native/src/orchestrator.rs index dd8b0a9994802..cce0910fed1c5 100644 --- a/packages/cubejs-backend-native/src/orchestrator.rs +++ b/packages/cubejs-backend-native/src/orchestrator.rs @@ -132,8 +132,11 @@ impl ResultWrapper { fn db_primitive_to_field_value(value: &DBResponsePrimitive) -> FieldValue<'_> { match value { DBResponsePrimitive::String(s) => FieldValue::String(Cow::Borrowed(s)), - DBResponsePrimitive::Number(n) => FieldValue::Number(*n), + DBResponsePrimitive::Int64(n) => FieldValue::Number(*n as f64), + DBResponsePrimitive::UInt64(n) => FieldValue::Number(*n as f64), + DBResponsePrimitive::Float64(n) => FieldValue::Number(*n), DBResponsePrimitive::Boolean(b) => FieldValue::Bool(*b), + DBResponsePrimitive::Timestamp(_) => FieldValue::String(Cow::Owned(value.to_string())), DBResponsePrimitive::Uncommon(v) => FieldValue::String(Cow::Owned( serde_json::to_string(&v).unwrap_or_else(|_| v.to_string()), )), diff --git a/packages/cubejs-cubestore-driver/codegen/http-command.ts b/packages/cubejs-cubestore-driver/codegen/http-command.ts index eaca7b7120327..439b5b9d95824 100644 --- a/packages/cubejs-cubestore-driver/codegen/http-command.ts +++ b/packages/cubejs-cubestore-driver/codegen/http-command.ts @@ -4,6 +4,7 @@ import { HttpError } from './http-error.js'; import { HttpQuery } from './http-query.js'; +import { HttpQueryResult } from './http-query-result.js'; import { HttpResultSet } from './http-result-set.js'; @@ -11,32 +12,35 @@ export enum HttpCommand { NONE = 0, HttpQuery = 1, HttpResultSet = 2, - HttpError = 3 + HttpError = 3, + HttpQueryResult = 4 } export function unionToHttpCommand( type: HttpCommand, - accessor: (obj:HttpError|HttpQuery|HttpResultSet) => HttpError|HttpQuery|HttpResultSet|null -): HttpError|HttpQuery|HttpResultSet|null { + accessor: (obj:HttpError|HttpQuery|HttpQueryResult|HttpResultSet) => HttpError|HttpQuery|HttpQueryResult|HttpResultSet|null +): HttpError|HttpQuery|HttpQueryResult|HttpResultSet|null { switch(HttpCommand[type]) { case 'NONE': return null; case 'HttpQuery': return accessor(new HttpQuery())! as HttpQuery; case 'HttpResultSet': return accessor(new HttpResultSet())! as HttpResultSet; case 'HttpError': return accessor(new HttpError())! as HttpError; + case 'HttpQueryResult': return accessor(new HttpQueryResult())! as HttpQueryResult; default: return null; } } export function unionListToHttpCommand( type: HttpCommand, - accessor: (index: number, obj:HttpError|HttpQuery|HttpResultSet) => HttpError|HttpQuery|HttpResultSet|null, + accessor: (index: number, obj:HttpError|HttpQuery|HttpQueryResult|HttpResultSet) => HttpError|HttpQuery|HttpQueryResult|HttpResultSet|null, index: number -): HttpError|HttpQuery|HttpResultSet|null { +): HttpError|HttpQuery|HttpQueryResult|HttpResultSet|null { switch(HttpCommand[type]) { case 'NONE': return null; case 'HttpQuery': return accessor(index, new HttpQuery())! as HttpQuery; case 'HttpResultSet': return accessor(index, new HttpResultSet())! as HttpResultSet; case 'HttpError': return accessor(index, new HttpError())! as HttpError; + case 'HttpQueryResult': return accessor(index, new HttpQueryResult())! as HttpQueryResult; default: return null; } } diff --git a/packages/cubejs-cubestore-driver/codegen/http-query-result-arrow.ts b/packages/cubejs-cubestore-driver/codegen/http-query-result-arrow.ts new file mode 100644 index 0000000000000..4af90e979dd18 --- /dev/null +++ b/packages/cubejs-cubestore-driver/codegen/http-query-result-arrow.ts @@ -0,0 +1,81 @@ +// automatically generated by the FlatBuffers compiler, do not modify + +/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ + +import * as flatbuffers from 'flatbuffers'; + +export class HttpQueryResultArrow { + bb: flatbuffers.ByteBuffer|null = null; + bb_pos = 0; + __init(i:number, bb:flatbuffers.ByteBuffer):HttpQueryResultArrow { + this.bb_pos = i; + this.bb = bb; + return this; +} + +static getRootAsHttpQueryResultArrow(bb:flatbuffers.ByteBuffer, obj?:HttpQueryResultArrow):HttpQueryResultArrow { + return (obj || new HttpQueryResultArrow()).__init(bb.readInt32(bb.position()) + bb.position(), bb); +} + +static getSizePrefixedRootAsHttpQueryResultArrow(bb:flatbuffers.ByteBuffer, obj?:HttpQueryResultArrow):HttpQueryResultArrow { + bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH); + return (obj || new HttpQueryResultArrow()).__init(bb.readInt32(bb.position()) + bb.position(), bb); +} + +data(index: number):number|null { + const offset = this.bb!.__offset(this.bb_pos, 4); + return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0; +} + +dataLength():number { + const offset = this.bb!.__offset(this.bb_pos, 4); + return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0; +} + +dataArray():Uint8Array|null { + const offset = this.bb!.__offset(this.bb_pos, 4); + return offset ? new Uint8Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null; +} + +isLast():boolean { + const offset = this.bb!.__offset(this.bb_pos, 6); + return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false; +} + +static startHttpQueryResultArrow(builder:flatbuffers.Builder) { + builder.startObject(2); +} + +static addData(builder:flatbuffers.Builder, dataOffset:flatbuffers.Offset) { + builder.addFieldOffset(0, dataOffset, 0); +} + +static createDataVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset { + builder.startVector(1, data.length, 1); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt8(data[i]!); + } + return builder.endVector(); +} + +static startDataVector(builder:flatbuffers.Builder, numElems:number) { + builder.startVector(1, numElems, 1); +} + +static addIsLast(builder:flatbuffers.Builder, isLast:boolean) { + builder.addFieldInt8(1, +isLast, +false); +} + +static endHttpQueryResultArrow(builder:flatbuffers.Builder):flatbuffers.Offset { + const offset = builder.endObject(); + builder.requiredField(offset, 4) // data + return offset; +} + +static createHttpQueryResultArrow(builder:flatbuffers.Builder, dataOffset:flatbuffers.Offset, isLast:boolean):flatbuffers.Offset { + HttpQueryResultArrow.startHttpQueryResultArrow(builder); + HttpQueryResultArrow.addData(builder, dataOffset); + HttpQueryResultArrow.addIsLast(builder, isLast); + return HttpQueryResultArrow.endHttpQueryResultArrow(builder); +} +} diff --git a/packages/cubejs-cubestore-driver/codegen/http-query-result-data.ts b/packages/cubejs-cubestore-driver/codegen/http-query-result-data.ts new file mode 100644 index 0000000000000..5ee08968db103 --- /dev/null +++ b/packages/cubejs-cubestore-driver/codegen/http-query-result-data.ts @@ -0,0 +1,34 @@ +// automatically generated by the FlatBuffers compiler, do not modify + +/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ + +import { HttpQueryResultArrow } from './http-query-result-arrow.js'; + + +export enum HttpQueryResultData { + NONE = 0, + HttpQueryResultArrow = 1 +} + +export function unionToHttpQueryResultData( + type: HttpQueryResultData, + accessor: (obj:HttpQueryResultArrow) => HttpQueryResultArrow|null +): HttpQueryResultArrow|null { + switch(HttpQueryResultData[type]) { + case 'NONE': return null; + case 'HttpQueryResultArrow': return accessor(new HttpQueryResultArrow())! as HttpQueryResultArrow; + default: return null; + } +} + +export function unionListToHttpQueryResultData( + type: HttpQueryResultData, + accessor: (index: number, obj:HttpQueryResultArrow) => HttpQueryResultArrow|null, + index: number +): HttpQueryResultArrow|null { + switch(HttpQueryResultData[type]) { + case 'NONE': return null; + case 'HttpQueryResultArrow': return accessor(index, new HttpQueryResultArrow())! as HttpQueryResultArrow; + default: return null; + } +} diff --git a/packages/cubejs-cubestore-driver/codegen/http-query-result.ts b/packages/cubejs-cubestore-driver/codegen/http-query-result.ts new file mode 100644 index 0000000000000..edf026048ddf9 --- /dev/null +++ b/packages/cubejs-cubestore-driver/codegen/http-query-result.ts @@ -0,0 +1,62 @@ +// automatically generated by the FlatBuffers compiler, do not modify + +/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ + +import * as flatbuffers from 'flatbuffers'; + +import { HttpQueryResultData, unionToHttpQueryResultData, unionListToHttpQueryResultData } from './http-query-result-data.js'; + + +export class HttpQueryResult { + bb: flatbuffers.ByteBuffer|null = null; + bb_pos = 0; + __init(i:number, bb:flatbuffers.ByteBuffer):HttpQueryResult { + this.bb_pos = i; + this.bb = bb; + return this; +} + +static getRootAsHttpQueryResult(bb:flatbuffers.ByteBuffer, obj?:HttpQueryResult):HttpQueryResult { + return (obj || new HttpQueryResult()).__init(bb.readInt32(bb.position()) + bb.position(), bb); +} + +static getSizePrefixedRootAsHttpQueryResult(bb:flatbuffers.ByteBuffer, obj?:HttpQueryResult):HttpQueryResult { + bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH); + return (obj || new HttpQueryResult()).__init(bb.readInt32(bb.position()) + bb.position(), bb); +} + +dataType():HttpQueryResultData { + const offset = this.bb!.__offset(this.bb_pos, 4); + return offset ? this.bb!.readUint8(this.bb_pos + offset) : HttpQueryResultData.NONE; +} + +data(obj:any):any|null { + const offset = this.bb!.__offset(this.bb_pos, 6); + return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null; +} + +static startHttpQueryResult(builder:flatbuffers.Builder) { + builder.startObject(2); +} + +static addDataType(builder:flatbuffers.Builder, dataType:HttpQueryResultData) { + builder.addFieldInt8(0, dataType, HttpQueryResultData.NONE); +} + +static addData(builder:flatbuffers.Builder, dataOffset:flatbuffers.Offset) { + builder.addFieldOffset(1, dataOffset, 0); +} + +static endHttpQueryResult(builder:flatbuffers.Builder):flatbuffers.Offset { + const offset = builder.endObject(); + builder.requiredField(offset, 6) // data + return offset; +} + +static createHttpQueryResult(builder:flatbuffers.Builder, dataType:HttpQueryResultData, dataOffset:flatbuffers.Offset):flatbuffers.Offset { + HttpQueryResult.startHttpQueryResult(builder); + HttpQueryResult.addDataType(builder, dataType); + HttpQueryResult.addData(builder, dataOffset); + return HttpQueryResult.endHttpQueryResult(builder); +} +} diff --git a/packages/cubejs-cubestore-driver/codegen/http-query.ts b/packages/cubejs-cubestore-driver/codegen/http-query.ts index d695cefe2611f..9161d8a274c56 100644 --- a/packages/cubejs-cubestore-driver/codegen/http-query.ts +++ b/packages/cubejs-cubestore-driver/codegen/http-query.ts @@ -6,6 +6,7 @@ import * as flatbuffers from 'flatbuffers'; import { HttpParameter } from './http-parameter.js'; import { HttpTable } from './http-table.js'; +import { QueryResultFormat } from './query-result-format.js'; export class HttpQuery { @@ -60,8 +61,13 @@ parametersLength():number { return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0; } +responseFormat():QueryResultFormat { + const offset = this.bb!.__offset(this.bb_pos, 12); + return offset ? this.bb!.readUint8(this.bb_pos + offset) : QueryResultFormat.Legacy; +} + static startHttpQuery(builder:flatbuffers.Builder) { - builder.startObject(4); + builder.startObject(5); } static addQuery(builder:flatbuffers.Builder, queryOffset:flatbuffers.Offset) { @@ -104,17 +110,22 @@ static startParametersVector(builder:flatbuffers.Builder, numElems:number) { builder.startVector(4, numElems, 4); } +static addResponseFormat(builder:flatbuffers.Builder, responseFormat:QueryResultFormat) { + builder.addFieldInt8(4, responseFormat, QueryResultFormat.Legacy); +} + static endHttpQuery(builder:flatbuffers.Builder):flatbuffers.Offset { const offset = builder.endObject(); return offset; } -static createHttpQuery(builder:flatbuffers.Builder, queryOffset:flatbuffers.Offset, traceObjOffset:flatbuffers.Offset, inlineTablesOffset:flatbuffers.Offset, parametersOffset:flatbuffers.Offset):flatbuffers.Offset { +static createHttpQuery(builder:flatbuffers.Builder, queryOffset:flatbuffers.Offset, traceObjOffset:flatbuffers.Offset, inlineTablesOffset:flatbuffers.Offset, parametersOffset:flatbuffers.Offset, responseFormat:QueryResultFormat):flatbuffers.Offset { HttpQuery.startHttpQuery(builder); HttpQuery.addQuery(builder, queryOffset); HttpQuery.addTraceObj(builder, traceObjOffset); HttpQuery.addInlineTables(builder, inlineTablesOffset); HttpQuery.addParameters(builder, parametersOffset); + HttpQuery.addResponseFormat(builder, responseFormat); return HttpQuery.endHttpQuery(builder); } } diff --git a/packages/cubejs-cubestore-driver/codegen/index.ts b/packages/cubejs-cubestore-driver/codegen/index.ts index 1b52b62c90b56..25ab49a508fbc 100644 --- a/packages/cubejs-cubestore-driver/codegen/index.ts +++ b/packages/cubejs-cubestore-driver/codegen/index.ts @@ -12,9 +12,13 @@ export { HttpMessage } from './http-message.js'; export { HttpParameter } from './http-parameter.js'; export { HttpParameterValue } from './http-parameter-value.js'; export { HttpQuery } from './http-query.js'; +export { HttpQueryResult } from './http-query-result.js'; +export { HttpQueryResultArrow } from './http-query-result-arrow.js'; +export { HttpQueryResultData } from './http-query-result-data.js'; export { HttpResultSet } from './http-result-set.js'; export { HttpRow } from './http-row.js'; export { HttpTable } from './http-table.js'; export { Int64Value } from './int64-value.js'; export { NullValue } from './null-value.js'; +export { QueryResultFormat } from './query-result-format.js'; export { StringValue } from './string-value.js'; diff --git a/packages/cubejs-cubestore-driver/codegen/query-result-format.ts b/packages/cubejs-cubestore-driver/codegen/query-result-format.ts new file mode 100644 index 0000000000000..9f52455cbfb4c --- /dev/null +++ b/packages/cubejs-cubestore-driver/codegen/query-result-format.ts @@ -0,0 +1,8 @@ +// automatically generated by the FlatBuffers compiler, do not modify + +/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */ + +export enum QueryResultFormat { + Legacy = 0, + Arrow = 1 +} diff --git a/packages/cubejs-cubestore-driver/src/CubeStoreDriver.ts b/packages/cubejs-cubestore-driver/src/CubeStoreDriver.ts index 43dc60eb2456b..447521b2b0b64 100644 --- a/packages/cubejs-cubestore-driver/src/CubeStoreDriver.ts +++ b/packages/cubejs-cubestore-driver/src/CubeStoreDriver.ts @@ -1,30 +1,37 @@ import { pipeline, Writable } from 'stream'; import { createGzip } from 'zlib'; -import { createWriteStream, createReadStream } from 'fs'; +import { createReadStream, createWriteStream } from 'fs'; import { unlink } from 'fs-extra'; import tempy from 'tempy'; import csvWriter from 'csv-write-stream'; import { BaseDriver, + CreateTableIndex, DownloadTableCSVData, + DownloadTableMemoryData, + DriverInterface, ExternalCreateTableOptions, - DownloadTableMemoryData, DriverInterface, IndexesSQL, CreateTableIndex, - StreamTableData, - StreamingSourceTableData, + ExternalDriverCompatibilities, + IndexesSQL, QueryOptions, - ExternalDriverCompatibilities, TableStructure, TableColumnQueryResult, + StreamingSourceTableData, + StreamTableData, + TableColumnQueryResult, + TableStructure, } from '@cubejs-backend/base-driver'; import { AsyncDebounce, getEnv, isVersionGte } from '@cubejs-backend/shared'; -import { format as formatSql, escape } from 'sqlstring'; +import { escape, format as formatSql } from 'sqlstring'; import fetch from 'node-fetch'; import { ConnectionConfig } from './types'; import { WebSocketConnection } from './WebSocketConnection'; +import { QueryResultFormat } from '../codegen'; const CubeStoreCapabilityMinVersion = { queueExclusive: '1.6.22', queueExternalId: '1.6.26', sendableParameters: '1.6.38', + arrowFormat: '1.6.66', } satisfies Record; type CubeStoreCapability = keyof typeof CubeStoreCapabilityMinVersion; @@ -61,6 +68,7 @@ type CreateTableOptions = { type CubeStoreQueryOptions = QueryOptions & { sendParameters?: boolean, + responseFormat?: QueryResultFormat, }; export class CubeStoreDriver extends BaseDriver implements DriverInterface { @@ -98,7 +106,7 @@ export class CubeStoreDriver extends BaseDriver implements DriverInterface { } public async query(query: string, values: any[], options?: CubeStoreQueryOptions): Promise { - const { inlineTables, sendParameters, ...queryTracingObj } = options ?? {}; + const { inlineTables, sendParameters, responseFormat, ...queryTracingObj } = options ?? {}; if (!sendParameters) { query = formatSql(query, values || []); @@ -106,7 +114,13 @@ export class CubeStoreDriver extends BaseDriver implements DriverInterface { const tracingObj = { ...queryTracingObj, instance: getEnv('instanceId') }; - return this.connection.query(query, inlineTables ?? [], tracingObj, sendParameters ? values : undefined); + return this.connection.query(query, sendParameters ? values : [], { + inlineTables: inlineTables ?? [], + queryTracingObj: tracingObj, + responseFormat: responseFormat ?? ( + await this.hasCapability('arrowFormat') ? QueryResultFormat.Arrow : QueryResultFormat.Legacy + ), + }); } public async release() { diff --git a/packages/cubejs-cubestore-driver/src/WebSocketConnection.ts b/packages/cubejs-cubestore-driver/src/WebSocketConnection.ts index ae08e3f78badb..6e70d08b2378b 100644 --- a/packages/cubejs-cubestore-driver/src/WebSocketConnection.ts +++ b/packages/cubejs-cubestore-driver/src/WebSocketConnection.ts @@ -18,6 +18,7 @@ import { HttpTable, Int64Value, NullValue, + QueryResultFormat, StringValue, } from '../codegen'; @@ -27,6 +28,14 @@ interface SentMessage { buffer: Uint8Array; } +export type QueryParameter = null | boolean | number | string | Buffer; + +export type WebSocketQueryOptions = { + inlineTables?: InlineTable[]; + queryTracingObj?: any; + responseFormat: QueryResultFormat; +}; + interface CubeStoreWebSocket extends WebSocket { readyPromise: Promise; lastHeartBeat: Date; @@ -282,7 +291,9 @@ export class WebSocketConnection { } } - public async query(query: string, inlineTables: InlineTable[], queryTracingObj?: any, parameters?: any): Promise { + public async query(query: string, parameters: QueryParameter[], options: WebSocketQueryOptions): Promise { + const { inlineTables, queryTracingObj, responseFormat } = options; + const builder = new flatbuffers.Builder(1024); const queryOffset = builder.createString(query); @@ -321,7 +332,7 @@ export class WebSocketConnection { } let parametersOffset: flatbuffers.Offset | null = null; - if (parameters) { + if (parameters.length > 0) { const httpParameterValues: flatbuffers.Offset[] = []; for (const parameter of parameters) { @@ -349,6 +360,8 @@ export class WebSocketConnection { HttpQuery.addParameters(builder, parametersOffset); } + HttpQuery.addResponseFormat(builder, responseFormat); + const httpQueryOffset = HttpQuery.endHttpQuery(builder); const messageId = this.messageCounter++; const connectionIdOffset = builder.createString(this.connectionId); diff --git a/rust/cube/Cargo.lock b/rust/cube/Cargo.lock index 58b4c865ff88a..b73647474e044 100644 --- a/rust/cube/Cargo.lock +++ b/rust/cube/Cargo.lock @@ -953,6 +953,7 @@ name = "cubeorchestrator" version = "0.1.0" dependencies = [ "anyhow", + "arrow", "chrono", "criterion", "cubeshared", diff --git a/rust/cube/cubeorchestrator/Cargo.toml b/rust/cube/cubeorchestrator/Cargo.toml index 20a1971e77d35..3dbde88404ef0 100644 --- a/rust/cube/cubeorchestrator/Cargo.toml +++ b/rust/cube/cubeorchestrator/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] +arrow = { version = "58", default-features = false, features = ["ipc"] } chrono = { version = "0.4.31", features = ["serde"] } cubeshared = { path = "../cubeshared" } serde = { version = "1.0.217", features = ["derive", "rc"] } diff --git a/rust/cube/cubeorchestrator/benches/common/mod.rs b/rust/cube/cubeorchestrator/benches/common/mod.rs index 45d8abce374af..6b2aeb0200a70 100644 --- a/rust/cube/cubeorchestrator/benches/common/mod.rs +++ b/rust/cube/cubeorchestrator/benches/common/mod.rs @@ -56,7 +56,7 @@ pub fn build_dataset( members.push(alias.clone()); let mut col = ColumnarArray::with_capacity(row_count); for i in 0..row_count { - col.push(DBResponsePrimitive::Number(((i * (j + 1)) as f64) * 0.5)); + col.push(DBResponsePrimitive::Float64(((i * (j + 1)) as f64) * 0.5)); } columns.push(col); } @@ -78,3 +78,62 @@ pub fn build_dataset( JsRawColumnarData { members, columns } } + +/// Build an Arrow IPC **stream** payload with the same logical data shape as +/// [`build_dataset`]: dimensions as Utf8, measures as Float64, time dimensions +/// as Timestamp(Millisecond). Used to compare Arrow parse throughput against the +/// JSON path. +pub fn build_arrow_ipc( + row_count: usize, + dimensions: &[(String, String)], + measures: &[(String, String)], + time_dims: &[TimeColumn], +) -> Vec { + use arrow::array::{ArrayRef, Float64Array, StringArray, TimestampMillisecondArray}; + use arrow::datatypes::{DataType, Field, Schema, TimeUnit}; + use arrow::ipc::writer::StreamWriter; + use arrow::record_batch::RecordBatch; + use std::sync::Arc; + + let total_cols = dimensions.len() + measures.len() + time_dims.len(); + let mut fields = Vec::with_capacity(total_cols); + let mut columns: Vec = Vec::with_capacity(total_cols); + + for (j, (_, alias)) in dimensions.iter().enumerate() { + fields.push(Field::new(alias.clone(), DataType::Utf8, false)); + let values: Vec = (0..row_count) + .map(|i| format!("dim_{}_{}", j, i % 1000)) + .collect(); + columns.push(Arc::new(StringArray::from(values))); + } + for (j, (_, alias)) in measures.iter().enumerate() { + fields.push(Field::new(alias.clone(), DataType::Float64, false)); + let values: Vec = (0..row_count) + .map(|i| ((i * (j + 1)) as f64) * 0.5) + .collect(); + columns.push(Arc::new(Float64Array::from(values))); + } + for (j, td) in time_dims.iter().enumerate() { + fields.push(Field::new( + td.alias.clone(), + DataType::Timestamp(TimeUnit::Millisecond, None), + false, + )); + // One day apart, offset per column — arbitrary but realistic spread. + let values: Vec = (0..row_count) + .map(|i| ((i + j) as i64) * 86_400_000) + .collect(); + columns.push(Arc::new(TimestampMillisecondArray::from(values))); + } + + let schema = Arc::new(Schema::new(fields)); + let batch = RecordBatch::try_new(schema.clone(), columns).expect("arrow record batch"); + + let mut buf = Vec::new(); + { + let mut writer = StreamWriter::try_new(&mut buf, schema.as_ref()).expect("arrow writer"); + writer.write(&batch).expect("write arrow batch"); + writer.finish().expect("finish arrow stream"); + } + buf +} diff --git a/rust/cube/cubeorchestrator/benches/parser.rs b/rust/cube/cubeorchestrator/benches/parser.rs index eef0a51472e32..7358bd56ed6de 100644 --- a/rust/cube/cubeorchestrator/benches/parser.rs +++ b/rust/cube/cubeorchestrator/benches/parser.rs @@ -4,14 +4,18 @@ use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Through use cubeorchestrator::query_message_parser::QueryResult; use cubeorchestrator::transport::JsRawColumnarData; use cubeshared::codegen::{ - HttpColumnValue, HttpColumnValueArgs, HttpCommand, HttpMessage, HttpMessageArgs, HttpResultSet, - HttpResultSetArgs, HttpRow, HttpRowArgs, + HttpColumnValue, HttpColumnValueArgs, HttpCommand, HttpMessage, HttpMessageArgs, + HttpQueryResult, HttpQueryResultArgs, HttpQueryResultArrow, HttpQueryResultArrowArgs, + HttpQueryResultData, HttpResultSet, HttpResultSetArgs, HttpRow, HttpRowArgs, }; use cubeshared::flatbuffers::FlatBufferBuilder; #[path = "common/mod.rs"] mod common; -use common::{build_dataset, make_member_aliases, split_dim_measure, COLUMN_COUNTS, ROW_COUNTS}; +use common::{ + build_arrow_ipc, build_dataset, make_member_aliases, split_dim_measure, COLUMN_COUNTS, + ROW_COUNTS, +}; /// Build a FlatBuffer `HttpMessage` payload mirroring CubeStore's wire format /// for `from_cubestore_fb` to parse. Cells are 16-character strings to give @@ -95,7 +99,14 @@ fn bench_from_cubestore_fb(c: &mut Criterion) { fn bench_from_js_raw_data(c: &mut Criterion) { let mut group = c.benchmark_group("QueryResult::from_js_raw_data"); - let combos: &[(usize, usize)] = &[(8, 10_000), (16, 10_000), (16, 100_000), (32, 100_000)]; + let combos: &[(usize, usize)] = &[ + (8, 1), + (8, 10), + (8, 10_000), + (16, 10_000), + (16, 100_000), + (32, 100_000), + ]; for &(col_count, row_count) in combos { let (dim_count, measure_count) = split_dim_measure(col_count); @@ -142,5 +153,85 @@ fn bench_from_js_raw_data(c: &mut Criterion) { group.finish(); } -criterion_group!(benches, bench_from_cubestore_fb, bench_from_js_raw_data); +/// Wrap raw Arrow IPC bytes in an `HttpMessage` FlatBuffer carrying +fn build_cubestore_fb_arrow_message(arrow_ipc: &[u8]) -> Vec { + let mut builder = FlatBufferBuilder::new(); + let data_vec = builder.create_vector(arrow_ipc); + let arrow = HttpQueryResultArrow::create( + &mut builder, + &HttpQueryResultArrowArgs { + data: Some(data_vec), + is_last: true, + }, + ); + let query_result = HttpQueryResult::create( + &mut builder, + &HttpQueryResultArgs { + data_type: HttpQueryResultData::HttpQueryResultArrow, + data: Some(arrow.as_union_value()), + }, + ); + let connection_id = builder.create_string("bench_connection"); + let message = HttpMessage::create( + &mut builder, + &HttpMessageArgs { + message_id: 1, + command_type: HttpCommand::HttpQueryResult, + command: Some(query_result.as_union_value()), + connection_id: Some(connection_id), + }, + ); + builder.finish(message, None); + builder.finished_data().to_vec() +} + +fn bench_from_cubestore_fb_arrow(c: &mut Criterion) { + let mut group = c.benchmark_group("QueryResult::from_cubestore_fb_arrow"); + + let combos: &[(usize, usize)] = &[ + (8, 1), + (8, 10), + (8, 10_000), + (16, 10_000), + (16, 100_000), + (32, 100_000), + ]; + + for &(col_count, row_count) in combos { + let (dim_count, measure_count) = split_dim_measure(col_count); + let dimensions = make_member_aliases("dim", dim_count); + let measures = make_member_aliases("measure", measure_count); + + let arrow_ipc = build_arrow_ipc(row_count, &dimensions, &measures, &[]); + let payload = build_cubestore_fb_arrow_message(&arrow_ipc); + let payload_len = payload.len(); + + eprintln!( + "from_cubestore_fb_arrow: c{:02}_r{} payload_bytes={}", + col_count, row_count, payload_len + ); + + group.throughput(Throughput::Elements((row_count * col_count) as u64)); + + let id = format!("c{:02}_r{}", col_count, row_count); + // Arrow IPC parse always materializes the QueryResult, so this measures + // the equivalent of from_js_raw_data's `parse_plus_build`. + group.bench_with_input(BenchmarkId::from_parameter(id), &(), |b, _| { + b.iter(|| { + let built = QueryResult::from_cubestore_fb(black_box(&payload)) + .expect("from_cubestore_fb arrow"); + black_box(built); + }); + }); + } + + group.finish(); +} + +criterion_group!( + benches, + bench_from_cubestore_fb, + bench_from_js_raw_data, + bench_from_cubestore_fb_arrow +); criterion_main!(benches); diff --git a/rust/cube/cubeorchestrator/src/query_message_parser.rs b/rust/cube/cubeorchestrator/src/query_message_parser.rs index c3b489b55f209..2fa60272d571c 100644 --- a/rust/cube/cubeorchestrator/src/query_message_parser.rs +++ b/rust/cube/cubeorchestrator/src/query_message_parser.rs @@ -2,10 +2,22 @@ use crate::{ query_result_transform::{ColumnarArray, DBResponsePrimitive}, transport::JsRawColumnarData, }; -use cubeshared::codegen::{root_as_http_message_with_opts, HttpCommand}; +use arrow::array::{ + Array, BooleanArray, Date32Array, Date64Array, Decimal128Array, Decimal256Array, Float16Array, + Float32Array, Float64Array, Int16Array, Int32Array, Int64Array, Int8Array, LargeStringArray, + StringArray, StringViewArray, TimestampMicrosecondArray, TimestampMillisecondArray, + TimestampNanosecondArray, TimestampSecondArray, UInt16Array, UInt32Array, UInt64Array, + UInt8Array, +}; +use arrow::datatypes::{DataType, TimeUnit}; +use arrow::ipc::reader::StreamReader; +use cubeshared::codegen::{ + root_as_http_message_with_opts, HttpCommand, HttpQueryResultData, HttpResultSet, +}; use cubeshared::flatbuffers::VerifierOptions; use indexmap::IndexMap; use neon::prelude::Finalize; +use std::io::Cursor; #[derive(Debug)] pub enum ParseError { @@ -28,6 +40,8 @@ pub enum ParseError { data_len: usize, }, FlatBufferError(String), + ArrowError(String), + UnsupportedArrowType(String), ErrorMessage(String), } @@ -70,6 +84,10 @@ impl std::fmt::Display for ParseError { members_len, data_len ), ParseError::FlatBufferError(msg) => write!(f, "FlatBuffer parsing error: {}", msg), + ParseError::ArrowError(msg) => write!(f, "Arrow parsing error: {}", msg), + ParseError::UnsupportedArrowType(ty) => { + write!(f, "Unsupported Arrow data type: {}", ty) + } ParseError::ErrorMessage(msg) => write!(f, "Error: {}", msg), } } @@ -150,6 +168,11 @@ impl QueryResult { }) } + pub fn from_js_raw_data(js_raw_data: JsRawColumnarData) -> Result { + let JsRawColumnarData { members, columns } = js_raw_data; + QueryResult::try_new(members, columns) + } + pub fn from_cubestore_fb(msg_data: &[u8]) -> Result { let opts = VerifierOptions { max_tables: 10_000_000, // Support up to 10M tables @@ -173,79 +196,329 @@ impl QueryResult { .command_as_http_result_set() .ok_or(ParseError::EmptyResultSet)?; - let members: Vec = match result_set.columns() { - Some(result_set_columns) => { - if result_set_columns.iter().any(|c| c.is_empty()) { - return Err(ParseError::ColumnNameNotDefined); - } - result_set_columns.iter().map(|c| c.to_owned()).collect() + Self::parse_legacy(result_set) + } + HttpCommand::HttpQueryResult => { + let query_result = http_message + .command_as_http_query_result() + .ok_or(ParseError::EmptyResultSet)?; + + match query_result.data_type() { + HttpQueryResultData::HttpQueryResultArrow => { + let arrow = + query_result + .data_as_http_query_result_arrow() + .ok_or_else(|| { + ParseError::FlatBufferError( + "HttpQueryResult.data is not HttpQueryResultArrow" + .to_string(), + ) + })?; + + Self::from_arrow(arrow.data().bytes()) } - None => Vec::new(), - }; - - let n_cols = members.len(); - let data: Vec = if let Some(result_set_rows) = result_set.rows() { - let row_count = result_set_rows.len(); - let mut data: Vec = (0..n_cols) - .map(|_| ColumnarArray::with_capacity(row_count)) - .collect(); - - for row in result_set_rows.iter() { - let values = row.values().ok_or(ParseError::NullRow)?; - for (col_idx, val) in values.iter().enumerate() { - if col_idx >= n_cols { - break; - } - let cell = match val.string_value() { - Some(s) => DBResponsePrimitive::String(s.to_owned()), - None => DBResponsePrimitive::Null, - }; - data[col_idx].push(cell); - } + // Marker for statements that complete without a result set + // (CREATE TABLE/INSERT, queue/cache writes). Carries no payload, + // so it maps to an empty result, like a zero-column legacy result set. + HttpQueryResultData::HttpQueryResultCompleted => Ok(QueryResult::empty()), + other => Err(ParseError::FlatBufferError(format!( + "Unsupported HttpQueryResult.data type: {:?}", + other + ))), + } + } + _ => Err(ParseError::UnsupportedCommand), + } + } - // Pad short rows with Null to keep all columns aligned. - for col in data.iter_mut().take(n_cols).skip(values.len()) { - col.push(DBResponsePrimitive::Null); - } + fn parse_legacy(result_set: HttpResultSet<'_>) -> Result { + let members: Vec = match result_set.columns() { + Some(result_set_columns) => { + if result_set_columns.iter().any(|c| c.is_empty()) { + return Err(ParseError::ColumnNameNotDefined); + } + result_set_columns.iter().map(|c| c.to_owned()).collect() + } + None => Vec::new(), + }; + + let n_cols = members.len(); + let data: Vec = if let Some(result_set_rows) = result_set.rows() { + let row_count = result_set_rows.len(); + let mut data: Vec = (0..n_cols) + .map(|_| ColumnarArray::with_capacity(row_count)) + .collect(); + + for row in result_set_rows.iter() { + let values = row.values().ok_or(ParseError::NullRow)?; + for (col_idx, val) in values.iter().enumerate() { + if col_idx >= n_cols { + break; } + let cell = match val.string_value() { + Some(s) => DBResponsePrimitive::String(s.to_owned()), + None => DBResponsePrimitive::Null, + }; + data[col_idx].push(cell); + } - data - } else { - (0..n_cols).map(|_| ColumnarArray::new()).collect() - }; + // Pad short rows with Null to keep all columns aligned. + for col in data.iter_mut().take(n_cols).skip(values.len()) { + col.push(DBResponsePrimitive::Null); + } + } + + data + } else { + (0..n_cols).map(|_| ColumnarArray::new()).collect() + }; + + QueryResult::try_new(members, data) + } + + pub(crate) fn from_arrow(bytes: &[u8]) -> Result { + let reader = StreamReader::try_new(Cursor::new(bytes), None) + .map_err(|err| ParseError::ArrowError(err.to_string()))?; + + let schema = reader.schema(); + let members: Vec = schema.fields().iter().map(|f| f.name().clone()).collect(); + let n_cols = members.len(); + + let mut columns: Vec> = (0..n_cols).map(|_| Vec::new()).collect(); - QueryResult::try_new(members, data) + for batch in reader { + let batch = batch.map_err(|err| ParseError::ArrowError(err.to_string()))?; + for (idx, col) in columns.iter_mut().enumerate() { + append_arrow_array(col, batch.column(idx).as_ref())?; } - _ => Err(ParseError::UnsupportedCommand), } + + let data: Vec = columns.into_iter().map(ColumnarArray::from).collect(); + QueryResult::try_new(members, data) } +} - pub fn from_js_raw_data(js_raw_data: JsRawColumnarData) -> Result { - let JsRawColumnarData { members, columns } = js_raw_data; - QueryResult::try_new(members, columns) +/// Format a decimal `mantissa` with `scale` fractional digits, stripping trailing +/// fractional zeros. Generic over the mantissa's `Display`, so it renders any Arrow +/// decimal width (`i32`/`i64`/`i128`/`i256`) directly — Decimal256 needs no fallback +/// to Arrow's own string conversion. +/// +/// e.g. `(25987600, 5) -> "259.876"`, `(6199200000, 5) -> "61992"`, +/// `(-250, 3) -> "-0.25"`, `(25, 5) -> "0.00025"`. +fn decimal_to_string(mantissa: T, scale: u32) -> String { + let raw = mantissa.to_string(); + if scale == 0 { + return raw; + } + + let scale = scale as usize; + let (sign, digits) = match raw.strip_prefix('-') { + Some(rest) => ("-", rest), + None => ("", raw.as_str()), + }; + + let (int_part, frac) = if digits.len() > scale { + let (int_part, frac) = digits.split_at(digits.len() - scale); + (int_part, frac.to_string()) + } else { + let pad = "0".repeat(scale - digits.len()); + ("0", format!("{pad}{digits}")) + }; + + let frac = frac.trim_end_matches('0'); + if frac.is_empty() { + format!("{sign}{int_part}") + } else { + format!("{sign}{int_part}.{frac}") } } +/// Append every element of an Arrow `array` to a column accumulator, converting +/// each value to [`DBResponsePrimitive`]. +fn append_arrow_array( + col: &mut Vec, + array: &dyn Array, +) -> Result<(), ParseError> { + let len = array.len(); + col.reserve(len); + + macro_rules! downcast_array_ref { + ($ty:ty) => { + array.as_any().downcast_ref::<$ty>().ok_or_else(|| { + ParseError::ArrowError(format!( + "Failed to downcast Arrow array to {}", + stringify!($ty) + )) + })? + }; + } + + macro_rules! push_int { + ($ty:ty) => {{ + let a = downcast_array_ref!($ty); + for i in 0..len { + if a.is_null(i) { + col.push(DBResponsePrimitive::Null); + } else { + col.push(DBResponsePrimitive::Int64(a.value(i) as i64)); + } + } + }}; + } + + macro_rules! push_uint { + ($ty:ty) => {{ + let a = downcast_array_ref!($ty); + for i in 0..len { + if a.is_null(i) { + col.push(DBResponsePrimitive::Null); + } else { + col.push(DBResponsePrimitive::UInt64(a.value(i) as u64)); + } + } + }}; + } + + macro_rules! push_float { + ($ty:ty) => {{ + let a = downcast_array_ref!($ty); + for i in 0..len { + if a.is_null(i) { + col.push(DBResponsePrimitive::Null); + } else { + col.push(DBResponsePrimitive::Float64(a.value(i) as f64)); + } + } + }}; + } + + macro_rules! push_str { + ($ty:ty) => {{ + let a = downcast_array_ref!($ty); + for i in 0..len { + if a.is_null(i) { + col.push(DBResponsePrimitive::Null); + } else { + col.push(DBResponsePrimitive::String(a.value(i).to_owned())); + } + } + }}; + } + + macro_rules! push_datetime { + ($ty:ty) => {{ + let a = downcast_array_ref!($ty); + for i in 0..len { + if a.is_null(i) { + col.push(DBResponsePrimitive::Null); + } else { + match a.value_as_datetime(i) { + Some(dt) => col.push(DBResponsePrimitive::Timestamp(dt)), + None => col.push(DBResponsePrimitive::Null), + } + } + } + }}; + } + + // Format decimal arrays from their mantissa and scale. `decimal_to_string` is + // generic over the mantissa width, so one path handles Decimal128/256. + macro_rules! push_decimal { + ($ty:ty) => {{ + let a = downcast_array_ref!($ty); + let scale = a.scale().max(0) as u32; + for i in 0..len { + if a.is_null(i) { + col.push(DBResponsePrimitive::Null); + } else { + col.push(DBResponsePrimitive::String(decimal_to_string( + a.value(i), + scale, + ))); + } + } + }}; + } + + match array.data_type() { + DataType::Null => { + for _ in 0..len { + col.push(DBResponsePrimitive::Null); + } + } + DataType::Boolean => { + let a = downcast_array_ref!(BooleanArray); + for i in 0..len { + if a.is_null(i) { + col.push(DBResponsePrimitive::Null); + } else { + col.push(DBResponsePrimitive::Boolean(a.value(i))); + } + } + } + DataType::Int8 => push_int!(Int8Array), + DataType::Int16 => push_int!(Int16Array), + DataType::Int32 => push_int!(Int32Array), + DataType::Int64 => push_int!(Int64Array), + DataType::UInt8 => push_uint!(UInt8Array), + DataType::UInt16 => push_uint!(UInt16Array), + DataType::UInt32 => push_uint!(UInt32Array), + DataType::UInt64 => push_uint!(UInt64Array), + DataType::Float32 => push_float!(Float32Array), + DataType::Float64 => push_float!(Float64Array), + DataType::Float16 => { + let a = downcast_array_ref!(Float16Array); + for i in 0..len { + if a.is_null(i) { + col.push(DBResponsePrimitive::Null); + } else { + col.push(DBResponsePrimitive::Float64(a.value(i).to_f64())); + } + } + } + DataType::Utf8 => push_str!(StringArray), + DataType::LargeUtf8 => push_str!(LargeStringArray), + DataType::Utf8View => push_str!(StringViewArray), + DataType::Date32 => push_datetime!(Date32Array), + DataType::Date64 => push_datetime!(Date64Array), + DataType::Timestamp(TimeUnit::Second, _) => push_datetime!(TimestampSecondArray), + DataType::Timestamp(TimeUnit::Millisecond, _) => push_datetime!(TimestampMillisecondArray), + DataType::Timestamp(TimeUnit::Microsecond, _) => push_datetime!(TimestampMicrosecondArray), + DataType::Timestamp(TimeUnit::Nanosecond, _) => push_datetime!(TimestampNanosecondArray), + DataType::Decimal128(_, _) => push_decimal!(Decimal128Array), + DataType::Decimal256(_, _) => push_decimal!(Decimal256Array), + other => return Err(ParseError::UnsupportedArrowType(format!("{other:?}"))), + } + + Ok(()) +} + #[cfg(test)] mod tests { use super::*; + use arrow::array::BinaryArray; + use arrow::datatypes::{Field, Schema}; + use arrow::ipc::writer::StreamWriter; + use arrow::record_batch::RecordBatch; use cubeshared::codegen::{ - root_as_http_message_unchecked, HttpColumnValue, HttpColumnValueArgs, HttpCommand, - HttpMessage, HttpMessageArgs, HttpResultSet, HttpResultSetArgs, HttpRow, HttpRowArgs, + root_as_http_message_unchecked, HttpColumnValue, HttpColumnValueArgs, HttpMessage, + HttpMessageArgs, HttpQueryResult, HttpQueryResultArgs, HttpQueryResultArrow, + HttpQueryResultArrowArgs, HttpQueryResultCompleted, HttpQueryResultCompletedArgs, + HttpResultSetArgs, HttpRow, HttpRowArgs, }; use cubeshared::flatbuffers::FlatBufferBuilder; + use std::sync::Arc; /// Helper function to create a test HttpMessage with a given number of rows and columns fn create_test_message(num_rows: usize, num_columns: usize) -> Vec { let mut builder = FlatBufferBuilder::new(); - // Create column names let column_names: Vec<_> = (0..num_columns) .map(|i| builder.create_string(&format!("column_{}", i))) .collect(); - // Create rows with values let mut rows_vec = Vec::with_capacity(num_rows); + for row_idx in 0..num_rows { // Create column values for this row let mut values_vec = Vec::with_capacity(num_columns); @@ -282,7 +555,6 @@ mod tests { }, ); - // Create the message let connection_id = builder.create_string("test_connection"); let message = HttpMessage::create( &mut builder, @@ -299,83 +571,82 @@ mod tests { } #[test] - fn test_parse_small_result_set() { - // Small result set should work fine + fn test_parse_small_result_set() -> Result<(), ParseError> { let msg_data = create_test_message(10, 5); - let result = QueryResult::from_cubestore_fb(&msg_data); - assert!(result.is_ok()); + let query_result = QueryResult::from_cubestore_fb(&msg_data)?; - let query_result = result.unwrap(); assert_eq!(query_result.members.len(), 5); assert_eq!(query_result.row_count, 10); assert_eq!(query_result.data.len(), 5); assert!(query_result.data.iter().all(|c| c.len() == 10)); + + Ok(()) } #[test] - fn test_parse_medium_result_set() { + fn test_parse_medium_result_set() -> Result<(), ParseError> { // Medium result set: 1000 rows, 20 columns let msg_data = create_test_message(1000, 20); - let result = QueryResult::from_cubestore_fb(&msg_data); - assert!(result.is_ok()); + let query_result = QueryResult::from_cubestore_fb(&msg_data)?; - let query_result = result.unwrap(); assert_eq!(query_result.members.len(), 20); assert_eq!(query_result.row_count, 1000); assert_eq!(query_result.data.len(), 20); assert!(query_result.data.iter().all(|c| c.len() == 1000)); + + Ok(()) } #[test] - fn test_parse_large_result_set() { + fn test_parse_large_result_set() -> Result<(), ParseError> { // Large result set: 10,000 rows, 30 columns // This should start showing verification issues let msg_data = create_test_message(10_000, 30); - let result = QueryResult::from_cubestore_fb(&msg_data); - assert!(result.is_ok()); + let query_result = QueryResult::from_cubestore_fb(&msg_data)?; - let query_result = result.unwrap(); assert_eq!(query_result.members.len(), 30); assert_eq!(query_result.row_count, 10_000); assert_eq!(query_result.data.len(), 30); assert!(query_result.data.iter().all(|c| c.len() == 10_000)); + + Ok(()) } #[test] - fn test_parse_very_large_result_set() { + fn test_parse_very_large_result_set() -> Result<(), ParseError> { // Very large result set: 33,000 rows, 40 columns let msg_data = create_test_message(33_000, 40); - let result = QueryResult::from_cubestore_fb(&msg_data); - assert!(result.is_ok()); + let query_result = QueryResult::from_cubestore_fb(&msg_data)?; - let query_result = result.unwrap(); assert_eq!(query_result.members.len(), 40); assert_eq!(query_result.row_count, 33_000); assert_eq!(query_result.data.len(), 40); assert!(query_result.data.iter().all(|c| c.len() == 33_000)); + + Ok(()) } #[test] - fn test_parse_huge_result_set() { + fn test_parse_huge_result_set() -> Result<(), ParseError> { // Huge result set: 50,000 rows, 100 columns let msg_data = create_test_message(50_000, 100); - let result = QueryResult::from_cubestore_fb(&msg_data); - assert!(result.is_ok()); + let query_result = QueryResult::from_cubestore_fb(&msg_data)?; - let query_result = result.unwrap(); assert_eq!(query_result.members.len(), 100); assert_eq!(query_result.row_count, 50_000); assert_eq!(query_result.data.len(), 100); assert!(query_result.data.iter().all(|c| c.len() == 50_000)); + + Ok(()) } #[test] - fn test_compare_with_unchecked_parse() { + fn test_compare_with_unchecked_parse() -> Result<(), ParseError> { // Test to demonstrate that unchecked parsing would work let msg_data = create_test_message(33_000, 40); // Checked version (current implementation) - let checked_result = QueryResult::from_cubestore_fb(&msg_data); + let checked_result = QueryResult::from_cubestore_fb(&msg_data)?; // Try unchecked version to verify the data itself is valid let unchecked_result = unsafe { @@ -398,15 +669,292 @@ mod tests { } }; - assert!(checked_result.is_ok()); + assert_eq!(checked_result.row_count, 33_000); assert!(unchecked_result.is_ok()); + + Ok(()) + } + + fn arrow_ipc_bytes(batch: &RecordBatch) -> Vec { + let mut buf = Vec::new(); + { + let schema = batch.schema(); + let mut writer = StreamWriter::try_new(&mut buf, schema.as_ref()).unwrap(); + writer.write(batch).unwrap(); + writer.finish().unwrap(); + } + buf } #[test] - fn test_parse_with_custom_verifier_options() { - use cubeshared::codegen::root_as_http_message_with_opts; - use cubeshared::flatbuffers::VerifierOptions; + fn test_from_arrow_basic_types() -> Result<(), ParseError> { + let schema = Arc::new(Schema::new(vec![ + Field::new("city", DataType::Utf8, true), + Field::new("amount", DataType::Float64, true), + Field::new( + "created_at", + DataType::Timestamp(TimeUnit::Millisecond, None), + true, + ), + ])); + + let cities = StringArray::from(vec![Some("Berlin"), None, Some("Lisbon")]); + let amounts = Float64Array::from(vec![Some(1.5), Some(2.0), None]); + // 0 -> 1970-01-01T00:00:00.000, 1_000 -> 1970-01-01T00:00:01.000 + let created = TimestampMillisecondArray::from(vec![Some(0i64), None, Some(1_000)]); + + let batch = RecordBatch::try_new( + schema, + vec![Arc::new(cities), Arc::new(amounts), Arc::new(created)], + ) + .unwrap(); + + let bytes = arrow_ipc_bytes(&batch); + let result = QueryResult::from_arrow(&bytes)?; + + assert_eq!(result.members, vec!["city", "amount", "created_at"]); + assert_eq!(result.row_count, 3); + assert_eq!(result.data.len(), 3); + + assert_eq!( + result.data[0].as_slice(), + &[ + DBResponsePrimitive::String("Berlin".to_string()), + DBResponsePrimitive::Null, + DBResponsePrimitive::String("Lisbon".to_string()), + ] + ); + assert_eq!( + result.data[1].as_slice(), + &[ + DBResponsePrimitive::Float64(1.5), + DBResponsePrimitive::Float64(2.0), + DBResponsePrimitive::Null, + ] + ); + // Timestamps land in the dedicated variant and serialize to the ISO format. + match &result.data[2].as_slice()[0] { + DBResponsePrimitive::Timestamp(_) => {} + other => panic!("expected Timestamp, got {other:?}"), + } + assert_eq!(result.data[2].as_slice()[1], DBResponsePrimitive::Null); + let json = serde_json::to_value(result.data[2].as_slice()).unwrap(); + assert_eq!(json[0], "1970-01-01T00:00:00.000"); + assert_eq!(json[1], serde_json::Value::Null); + assert_eq!(json[2], "1970-01-01T00:00:01.000"); + + Ok(()) + } + + #[test] + fn test_from_arrow_decimal256_beyond_i128() -> Result<(), ParseError> { + use arrow::datatypes::i256; + + let schema = Arc::new(Schema::new(vec![Field::new( + "d256", + DataType::Decimal256(76, 2), + true, + )])); + + // A mantissa larger than i128::MAX, formatted directly (no Arrow fallback). + let big = i256::from_string("999999999999999999999999999999999999999").unwrap(); + let d256 = Decimal256Array::from(vec![Some(big), None]) + .with_precision_and_scale(76, 2) + .unwrap(); + + let batch = RecordBatch::try_new(schema, vec![Arc::new(d256)]).unwrap(); + let bytes = arrow_ipc_bytes(&batch); + let result = QueryResult::from_arrow(&bytes)?; + + assert_eq!( + result.data[0].as_slice(), + &[ + DBResponsePrimitive::String("9999999999999999999999999999999999999.99".to_string()), + DBResponsePrimitive::Null, + ] + ); + + Ok(()) + } + + #[test] + fn test_from_arrow_decimal128_leading_null() -> Result<(), ParseError> { + let schema = Arc::new(Schema::new(vec![Field::new( + "totalSales", + DataType::Decimal128(38, 2), + true, + )])); + + let d128 = Decimal128Array::from(vec![ + None, + Some(239996i128), + Some(224991), + Some(215490), + Some(197989), + ]) + .with_precision_and_scale(38, 2) + .unwrap(); + + let batch = RecordBatch::try_new(schema, vec![Arc::new(d128)]).unwrap(); + let bytes = arrow_ipc_bytes(&batch); + let result = QueryResult::from_arrow(&bytes)?; + + assert_eq!(result.row_count, 5); + let json = serde_json::to_value(result.data[0].as_slice()).unwrap(); + assert_eq!(json[0], serde_json::Value::Null); + assert_eq!(json[1], "2399.96"); + assert_eq!(json[2], "2249.91"); + assert_eq!(json[3], "2154.9"); + assert_eq!(json[4], "1979.89"); + + Ok(()) + } + + #[test] + fn test_decimal_to_string() { + for (mantissa, scale, expected) in [ + (6199200000i128, 5u32, "61992"), + (25987600, 5, "259.876"), + (1500, 3, "1.5"), + (-250, 3, "-0.25"), + (0, 5, "0"), + (21098000, 5, "210.98"), + (100, 0, "100"), + (0, 0, "0"), + (-5, 0, "-5"), + (25, 5, "0.00025"), + (-1, 0, "-1"), + (i128::MAX, 0, "170141183460469231731687303715884105727"), + ] { + assert_eq!( + decimal_to_string(mantissa, scale), + expected, + "mantissa={mantissa} scale={scale}" + ); + } + } + + #[test] + fn test_from_arrow_unsupported_type() -> Result<(), ParseError> { + let schema = Arc::new(Schema::new(vec![Field::new( + "blob", + DataType::Binary, + false, + )])); + let blobs = BinaryArray::from_vec(vec![b"a".as_ref(), b"b".as_ref()]); + let batch = RecordBatch::try_new(schema, vec![Arc::new(blobs)]).unwrap(); + + let bytes = arrow_ipc_bytes(&batch); + let err = QueryResult::from_arrow(&bytes).expect_err("should reject Binary"); + assert!(matches!(err, ParseError::UnsupportedArrowType(_))); + + Ok(()) + } + + #[test] + fn test_from_cubestore_fb_arrow_query_result() -> Result<(), ParseError> { + // Arrow IPC stream payload, as CubeStore would emit it. + let schema = Arc::new(Schema::new(vec![ + Field::new("city", DataType::Utf8, false), + Field::new("amount", DataType::Float64, false), + ])); + let batch = RecordBatch::try_new( + schema, + vec![ + Arc::new(StringArray::from(vec!["Berlin", "Lisbon"])), + Arc::new(Float64Array::from(vec![1.5, 2.0])), + ], + ) + .unwrap(); + let ipc = arrow_ipc_bytes(&batch); + + // Wrap it in a FlatBuffer HttpMessage with the HttpQueryResult command. + let mut builder = FlatBufferBuilder::new(); + let data_vec = builder.create_vector(&ipc); + let arrow = HttpQueryResultArrow::create( + &mut builder, + &HttpQueryResultArrowArgs { + data: Some(data_vec), + is_last: true, + }, + ); + let query_result = HttpQueryResult::create( + &mut builder, + &HttpQueryResultArgs { + data_type: HttpQueryResultData::HttpQueryResultArrow, + data: Some(arrow.as_union_value()), + }, + ); + let connection_id = builder.create_string("test_connection"); + let message = HttpMessage::create( + &mut builder, + &HttpMessageArgs { + message_id: 1, + command_type: HttpCommand::HttpQueryResult, + command: Some(query_result.as_union_value()), + connection_id: Some(connection_id), + }, + ); + builder.finish(message, None); + let msg_data = builder.finished_data().to_vec(); + + let result = QueryResult::from_cubestore_fb(&msg_data)?; + assert_eq!(result.members, vec!["city", "amount"]); + assert_eq!(result.row_count, 2); + assert_eq!( + result.data[0].as_slice(), + &[ + DBResponsePrimitive::String("Berlin".to_string()), + DBResponsePrimitive::String("Lisbon".to_string()), + ] + ); + assert_eq!( + result.data[1].as_slice(), + &[ + DBResponsePrimitive::Float64(1.5), + DBResponsePrimitive::Float64(2.0), + ] + ); + + Ok(()) + } + + #[test] + fn test_from_cubestore_fb_completed_query_result() -> Result<(), ParseError> { + let mut builder = FlatBufferBuilder::new(); + let completed = + HttpQueryResultCompleted::create(&mut builder, &HttpQueryResultCompletedArgs {}); + let query_result = HttpQueryResult::create( + &mut builder, + &HttpQueryResultArgs { + data_type: HttpQueryResultData::HttpQueryResultCompleted, + data: Some(completed.as_union_value()), + }, + ); + let connection_id = builder.create_string("test_connection"); + let message = HttpMessage::create( + &mut builder, + &HttpMessageArgs { + message_id: 1, + command_type: HttpCommand::HttpQueryResult, + command: Some(query_result.as_union_value()), + connection_id: Some(connection_id), + }, + ); + builder.finish(message, None); + let msg_data = builder.finished_data().to_vec(); + + let result = QueryResult::from_cubestore_fb(&msg_data)?; + assert!(result.members.is_empty()); + assert_eq!(result.row_count, 0); + assert!(result.data.is_empty()); + + Ok(()) + } + + #[test] + fn test_parse_with_custom_verifier_options() -> Result<(), ParseError> { // Test that custom verifier options can handle large datasets let msg_data = create_test_message(33_000, 40); @@ -418,23 +966,21 @@ mod tests { }; // This should succeed with custom options - let result = root_as_http_message_with_opts(&opts, &msg_data); + let http_message = root_as_http_message_with_opts(&opts, &msg_data) + .map_err(|err| ParseError::FlatBufferError(err.to_string()))?; - match result { - Ok(http_message) => match http_message.command_type() { - HttpCommand::HttpResultSet => { - let result_set = http_message.command_as_http_result_set(); - if let Some(rs) = result_set { - if let Some(rows) = rs.rows() { - assert_eq!(rows.len(), 33_000); - } + match http_message.command_type() { + HttpCommand::HttpResultSet => { + let result_set = http_message.command_as_http_result_set(); + if let Some(rs) = result_set { + if let Some(rows) = rs.rows() { + assert_eq!(rows.len(), 33_000); } } - _ => panic!("Wrong command type"), - }, - Err(e) => { - panic!("Failed to parse with custom verifier options: {:?}", e); } + _ => panic!("Wrong command type"), } + + Ok(()) } } diff --git a/rust/cube/cubeorchestrator/src/query_result_transform.rs b/rust/cube/cubeorchestrator/src/query_result_transform.rs index f4c8a29c26b27..35f761fc62442 100644 --- a/rust/cube/cubeorchestrator/src/query_result_transform.rs +++ b/rust/cube/cubeorchestrator/src/query_result_transform.rs @@ -6,6 +6,7 @@ use crate::{ }, }; use anyhow::{bail, Context, Result}; +use chrono::format::{Fixed, Item, Numeric, Pad}; use chrono::{DateTime, NaiveDateTime, TimeZone, Utc}; use indexmap::{Equivalent, IndexMap}; use itertools::multizip; @@ -180,7 +181,7 @@ pub fn transform_value(value: DBResponsePrimitive, type_: &str) -> DBResponsePri let formatted = DateTime::parse_from_rfc3339(s) .map(|dt| dt.format("%Y-%m-%dT%H:%M:%S%.3f").to_string()) .or_else(|_| { - NaiveDateTime::parse_from_str(s, "%Y-%m-%d %H:%M:%S%.3f").map(|dt| { + NaiveDateTime::parse_from_str(s, "%Y-%m-%d %H:%M:%S%.f").map(|dt| { Utc.from_utc_datetime(&dt) .format("%Y-%m-%dT%H:%M:%S%.3f") .to_string() @@ -201,14 +202,14 @@ pub fn transform_value(value: DBResponsePrimitive, type_: &str) -> DBResponsePri }) }) .or_else(|_| { - NaiveDateTime::parse_from_str(s, "%Y-%m-%d %H:%M:%S%.3f %Z").map(|dt| { + NaiveDateTime::parse_from_str(s, "%Y-%m-%d %H:%M:%S%.f %Z").map(|dt| { Utc.from_utc_datetime(&dt) .format("%Y-%m-%dT%H:%M:%S%.3f") .to_string() }) }) .or_else(|_| { - NaiveDateTime::parse_from_str(s, "%Y-%m-%d %H:%M:%S%.3f %:z").map(|dt| { + NaiveDateTime::parse_from_str(s, "%Y-%m-%d %H:%M:%S%.f %:z").map(|dt| { Utc.from_utc_datetime(&dt) .format("%Y-%m-%dT%H:%M:%S%.3f") .to_string() @@ -1152,16 +1153,54 @@ pub struct RequestResultArray { pub results: Vec, } -#[derive(Debug, Clone, Serialize, PartialEq)] -#[serde(untagged)] +#[derive(Debug, Clone, PartialEq)] pub enum DBResponsePrimitive { Null, Boolean(bool), - Number(f64), + Int64(i64), + UInt64(u64), + Float64(f64), String(String), + Timestamp(NaiveDateTime), Uncommon(Value), } +/// `%Y-%m-%dT%H:%M:%S%.3f` +const TIMESTAMP_ITEMS: &[Item<'static>] = &[ + Item::Numeric(Numeric::Year, Pad::Zero), + Item::Literal("-"), + Item::Numeric(Numeric::Month, Pad::Zero), + Item::Literal("-"), + Item::Numeric(Numeric::Day, Pad::Zero), + Item::Literal("T"), + Item::Numeric(Numeric::Hour, Pad::Zero), + Item::Literal(":"), + Item::Numeric(Numeric::Minute, Pad::Zero), + Item::Literal(":"), + Item::Numeric(Numeric::Second, Pad::Zero), + // `%.3f`: leading dot followed by 3 fractional-second digits. + Item::Fixed(Fixed::Nanosecond3), +]; + +// Hand-written `Serialize` mirroring serde's untagged behavior for the JSON-native +// variants, plus a string rendering for `Timestamp`. +impl Serialize for DBResponsePrimitive { + fn serialize(&self, serializer: S) -> Result { + match self { + DBResponsePrimitive::Null => serializer.serialize_none(), + DBResponsePrimitive::Boolean(b) => serializer.serialize_bool(*b), + DBResponsePrimitive::Int64(n) => serializer.serialize_i64(*n), + DBResponsePrimitive::UInt64(n) => serializer.serialize_u64(*n), + DBResponsePrimitive::Float64(n) => serializer.serialize_f64(*n), + DBResponsePrimitive::String(s) => serializer.serialize_str(s), + DBResponsePrimitive::Timestamp(dt) => { + serializer.collect_str(&dt.format_with_items(TIMESTAMP_ITEMS.iter())) + } + DBResponsePrimitive::Uncommon(v) => v.serialize(serializer), + } + } +} + // Hand-written `Deserialize` that avoids serde's untagged-enum buffering. impl<'de> Deserialize<'de> for DBResponsePrimitive { fn deserialize(deserializer: D) -> Result @@ -1182,23 +1221,35 @@ impl<'de> Deserialize<'de> for DBResponsePrimitive { } fn visit_i64(self, v: i64) -> Result { - Ok(DBResponsePrimitive::Number(v as f64)) + Ok(DBResponsePrimitive::Int64(v)) } fn visit_i128(self, v: i128) -> Result { - Ok(DBResponsePrimitive::Number(v as f64)) + if let Ok(n) = i64::try_from(v) { + Ok(DBResponsePrimitive::Int64(n)) + } else if let Ok(n) = u64::try_from(v) { + Ok(DBResponsePrimitive::UInt64(n)) + } else { + Err(E::custom(format!("integer {v} out of range for i64/u64"))) + } } fn visit_u64(self, v: u64) -> Result { - Ok(DBResponsePrimitive::Number(v as f64)) + Ok(DBResponsePrimitive::UInt64(v)) } fn visit_u128(self, v: u128) -> Result { - Ok(DBResponsePrimitive::Number(v as f64)) + if let Ok(n) = i64::try_from(v) { + Ok(DBResponsePrimitive::Int64(n)) + } else if let Ok(n) = u64::try_from(v) { + Ok(DBResponsePrimitive::UInt64(n)) + } else { + Err(E::custom(format!("integer {v} out of range for i64/u64"))) + } } fn visit_f64(self, v: f64) -> Result { - Ok(DBResponsePrimitive::Number(v)) + Ok(DBResponsePrimitive::Float64(v)) } fn visit_str(self, v: &str) -> Result { @@ -1254,12 +1305,18 @@ impl Display for DBResponsePrimitive { let str = match self { DBResponsePrimitive::Null => "null".to_string(), DBResponsePrimitive::Boolean(b) => b.to_string(), - DBResponsePrimitive::Number(n) => n.to_string(), + DBResponsePrimitive::Int64(n) => n.to_string(), + DBResponsePrimitive::UInt64(n) => n.to_string(), + DBResponsePrimitive::Float64(n) => n.to_string(), DBResponsePrimitive::String(s) => s.clone(), + DBResponsePrimitive::Timestamp(dt) => { + dt.format_with_items(TIMESTAMP_ITEMS.iter()).to_string() + } DBResponsePrimitive::Uncommon(v) => { serde_json::to_string(&v).unwrap_or_else(|_| v.to_string()) } }; + write!(f, "{}", str) } } @@ -1322,6 +1379,15 @@ mod tests { use serde_json::from_str; use std::{fmt, sync::LazyLock}; + /// Guards the in-memory size of the per-cell primitive. It is materialized + /// once per cell across every parse/transform path, so an accidental growth + /// (e.g. a fat new variant) would regress memory and throughput for large + /// result sets. Bump this deliberately if the layout must change. + #[test] + fn test_db_response_primitive_size() { + assert_eq!(std::mem::size_of::(), 32); + } + type TestSuiteData = HashMap; #[derive(Clone, Deserialize)] @@ -2283,6 +2349,25 @@ mod tests { ); } + #[test] + fn test_transform_value_string_variable_frac_digits_to_time() { + // A time string may carry any number of fractional-second digits. + for (input, expected) in [ + ("2020-04-01 00:00:00.0", "2020-04-01T00:00:00.000"), + ("2020-04-01 00:00:00.12", "2020-04-01T00:00:00.120"), + ("2020-04-01 00:00:00.123456", "2020-04-01T00:00:00.123"), + ("2020-04-01 00:00:00.0 UTC", "2020-04-01T00:00:00.000"), + ("2020-04-01 00:00:00.0 +00:00", "2020-04-01T00:00:00.000"), + ] { + let result = transform_value(DBResponsePrimitive::String(input.to_string()), "time"); + assert_eq!( + result, + DBResponsePrimitive::String(expected.to_string()), + "input: {input}" + ); + } + } + #[test] fn test_transform_value_string_wo_t_to_time_valid_rfc3339() { let value = DBResponsePrimitive::String("2024-01-01 12:30:15.123".to_string()); From bd8865113889b5153ed837c3dc51bc6bca5d3585 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Fri, 5 Jun 2026 16:31:56 +0200 Subject: [PATCH 20/24] fix(cubeorchestrator)!: Serialize all numeric query results as JSON strings, fix #1879 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For a long time, Cube returned inconsistent JSON types for numeric values depending on the driver — sometimes strings, sometimes numbers. This is incorrect: the wire type of a value should not depend on the data source. We have decided to return all numeric values as strings. The legacy CubeStore result set carried every value as a string, so numbers always serialized to JSON strings. The Arrow path produces real Int64/UInt64/Float64 primitives that serialized to JSON numbers, which changed the wire shape and broke pre-aggregation snapshots (e.g. "5" -> 5, "0.6666666666666666" -> 0.6666666666666666). BREAKING CHANGE: All numeric values in query results are now serialized as JSON strings regardless of the data source driver. Previously the JSON type of numeric values varied by driver (string or number). Clients that relied on receiving JSON numbers must parse the string values instead. --- .../cubejs-api-gateway/test/index.test.ts | 14 +- ...jdbc-export-bucket-azure-full.test.ts.snap | 34 +- ...port-bucket-azure-prefix-full.test.ts.snap | 34 +- ...s-jdbc-export-bucket-gcs-full.test.ts.snap | 34 +- ...export-bucket-gcs-prefix-full.test.ts.snap | 34 +- ...ks-jdbc-export-bucket-s3-full.test.ts.snap | 34 +- ...-export-bucket-s3-prefix-full.test.ts.snap | 34 +- .../databricks-jdbc-full.test.ts.snap | 2054 ++++++------ .../__snapshots__/mysql-full.test.ts.snap | 1324 ++++---- .../__snapshots__/oracle-full.test.ts.snap | 2742 ++++++++--------- .../__snapshots__/postgres-full.test.ts.snap | 850 ++--- ...gres-pre-agg-credentials-full.test.ts.snap | 808 ++--- ...edshift-export-bucket-s3-full.test.ts.snap | 808 ++--- .../__snapshots__/redshift-full.test.ts.snap | 808 ++--- .../birdbox-postgresql.test.ts.snap | 6 +- .../driver-postgres.test.ts.snap | 1900 ++++++------ .../__snapshots__/smoke-rbac.test.ts.snap | 20 +- .../__snapshots__/smoke-trino.test.ts.snap | 10 +- .../cubejs-testing/test/smoke-rbac.test.ts | 62 +- .../src/query_message_parser.rs | 6 + .../src/query_result_transform.rs | 14 +- 21 files changed, 5820 insertions(+), 5810 deletions(-) diff --git a/packages/cubejs-api-gateway/test/index.test.ts b/packages/cubejs-api-gateway/test/index.test.ts index 6c2f9c27311d7..15fc50a0d4ed7 100644 --- a/packages/cubejs-api-gateway/test/index.test.ts +++ b/packages/cubejs-api-gateway/test/index.test.ts @@ -211,7 +211,7 @@ describe('API Gateway', () => { .expect(200); console.log(res.body); - expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': 42 }]); + expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': '42' }]); expect(queryRewrite.mock.calls.length).toEqual(1); }); @@ -252,7 +252,7 @@ describe('API Gateway', () => { .expect(200); console.log(res.body); - expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': 42 }]); + expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': '42' }]); expect(queryRewrite.mock.calls.length).toEqual(1); }); @@ -300,7 +300,7 @@ describe('API Gateway', () => { .expect(200); console.log(res.body); - expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': 42 }]); + expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': '42' }]); expect(queryRewrite.mock.calls.length).toEqual(1); }); @@ -315,7 +315,7 @@ describe('API Gateway', () => { .set('Authorization', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.t-IDcSemACt8x4iTMCda8Yhe3iZaWbvV5XKSTbuAn0M') .expect(200); console.log(res.body); - expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': 42 }]); + expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': '42' }]); }); test('custom granularities in annotation from timeDimensions', async () => { @@ -328,7 +328,7 @@ describe('API Gateway', () => { .set('Authorization', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.t-IDcSemACt8x4iTMCda8Yhe3iZaWbvV5XKSTbuAn0M') .expect(200); console.log(res.body); - expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': 42 }]); + expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': '42' }]); expect(res.body.annotation.timeDimensions['Foo.timeGranularities.half_year_by_1st_april']) .toStrictEqual({ granularity: { @@ -350,7 +350,7 @@ describe('API Gateway', () => { .set('Authorization', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.t-IDcSemACt8x4iTMCda8Yhe3iZaWbvV5XKSTbuAn0M') .expect(200); console.log(res.body); - expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': 42 }]); + expect(res.body && res.body.data).toStrictEqual([{ 'Foo.bar': '42' }]); expect(res.body.annotation.timeDimensions['Foo.timeGranularities.half_year_by_1st_april']) .toStrictEqual({ granularity: { @@ -851,7 +851,7 @@ describe('API Gateway', () => { measures: ['Foo.bar'], timeDimensions: [{ dimension: 'Foo.time', granularity: 'day' }], }, - data: [{ 'Foo.bar': 42 }], + data: [{ 'Foo.bar': '42' }], }); }); }); diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-full.test.ts.snap index b56068bc8e1a8..7305690412867 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-full.test.ts.snap @@ -13174,12 +13174,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 48.896, + "BigECommerce.totalSales": "48.896", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 232.88, + "BigECommerce.totalSales": "232.88", }, ] `; @@ -20672,31 +20672,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.896", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.368", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.6", }, ] `; @@ -20707,31 +20707,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.376", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.208", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.6", }, ] `; @@ -20742,31 +20742,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.792", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.736", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.2", }, ] `; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-prefix-full.test.ts.snap index 2434064c5cb47..36ea565045cb4 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-azure-prefix-full.test.ts.snap @@ -13174,12 +13174,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 48.896, + "BigECommerce.totalSales": "48.896", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 232.88, + "BigECommerce.totalSales": "232.88", }, ] `; @@ -20477,31 +20477,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.896", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.368", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.6", }, ] `; @@ -20512,31 +20512,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.376", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.208", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.6", }, ] `; @@ -20547,31 +20547,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.792", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.736", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.2", }, ] `; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-full.test.ts.snap index a91e559ae578f..211f8dc0cfa93 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-full.test.ts.snap @@ -13174,12 +13174,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 48.896, + "BigECommerce.totalSales": "48.896", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 232.88, + "BigECommerce.totalSales": "232.88", }, ] `; @@ -20672,31 +20672,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.896", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.368", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.6", }, ] `; @@ -20707,31 +20707,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.376", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.208", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.6", }, ] `; @@ -20742,31 +20742,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.792", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.736", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.2", }, ] `; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-prefix-full.test.ts.snap index 032d39d87e6a6..62c7bf86ec40a 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-gcs-prefix-full.test.ts.snap @@ -13174,12 +13174,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 48.896, + "BigECommerce.totalSales": "48.896", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 232.88, + "BigECommerce.totalSales": "232.88", }, ] `; @@ -20477,31 +20477,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.896", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.368", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.6", }, ] `; @@ -20512,31 +20512,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.376", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.208", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.6", }, ] `; @@ -20547,31 +20547,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.792", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.736", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.2", }, ] `; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-full.test.ts.snap index c439f8576f130..0d8bcd12ebd55 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-full.test.ts.snap @@ -13174,12 +13174,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 48.896, + "BigECommerce.totalSales": "48.896", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 232.88, + "BigECommerce.totalSales": "232.88", }, ] `; @@ -20672,31 +20672,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.896", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.368", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.6", }, ] `; @@ -20707,31 +20707,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.376", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.208", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.6", }, ] `; @@ -20742,31 +20742,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.792", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.736", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.2", }, ] `; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-prefix-full.test.ts.snap index 105570640bf3f..d7d615f962b55 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-export-bucket-s3-prefix-full.test.ts.snap @@ -13174,12 +13174,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 48.896, + "BigECommerce.totalSales": "48.896", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 232.88, + "BigECommerce.totalSales": "232.88", }, ] `; @@ -20477,31 +20477,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.896", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.368", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.6", }, ] `; @@ -20512,31 +20512,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.376", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.208", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.6", }, ] `; @@ -20547,31 +20547,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.792", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.736", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.2", }, ] `; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-full.test.ts.snap index 9b84b35df34f6..f178018aeffee 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/databricks-jdbc-full.test.ts.snap @@ -12320,14 +12320,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -12335,14 +12335,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, ] @@ -12355,14 +12355,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -12370,14 +12370,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12385,14 +12385,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12400,14 +12400,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12415,14 +12415,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -12430,14 +12430,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12445,14 +12445,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12460,14 +12460,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.6", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.profit": "-19.864", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, ] @@ -12482,14 +12482,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12497,14 +12497,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.profit": "-7.2", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", + "ECommerce.sales": "120", "ECommerce.subCategory": "Machines", }, ] @@ -12517,14 +12517,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -12532,14 +12532,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12547,14 +12547,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12562,14 +12562,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, Object { @@ -12577,14 +12577,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12592,14 +12592,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -12607,14 +12607,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -12622,14 +12622,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -12637,14 +12637,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -12652,14 +12652,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -12667,14 +12667,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.profit": "0.7065", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", + "ECommerce.sales": "14.13", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12682,14 +12682,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.profit": "129.294", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", + "ECommerce.sales": "2154.9", "ECommerce.subCategory": "Bookcases", }, ] @@ -12704,14 +12704,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -12719,14 +12719,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -12734,14 +12734,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -12749,14 +12749,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, ] @@ -12769,14 +12769,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12784,14 +12784,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -12799,14 +12799,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -12814,14 +12814,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -12829,14 +12829,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.profit": "44.975", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", + "ECommerce.sales": "179.9", "ECommerce.subCategory": "Art", }, Object { @@ -12844,14 +12844,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -12859,14 +12859,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.profit": "15.498", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12874,14 +12874,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12889,14 +12889,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.profit": "467.9922", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", + "ECommerce.sales": "1199.98", "ECommerce.subCategory": "Copiers", }, Object { @@ -12904,14 +12904,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.4", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.profit": "74.9985", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", + "ECommerce.sales": "899.982", "ECommerce.subCategory": "Copiers", }, Object { @@ -12919,14 +12919,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -13564,12 +13564,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 48.896, + "BigECommerce.totalSales": "48.896", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 232.88, + "BigECommerce.totalSales": "232.88", }, ] `; @@ -16703,14 +16703,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -16718,14 +16718,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -16733,14 +16733,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -16748,14 +16748,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -16763,14 +16763,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -16778,14 +16778,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -16793,14 +16793,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -16808,14 +16808,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -16823,14 +16823,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -16838,14 +16838,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, ] @@ -16858,14 +16858,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.profit": "9.9652", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", + "ECommerce.sales": "113.888", "ECommerce.subCategory": "Chairs", }, Object { @@ -16873,14 +16873,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -16888,14 +16888,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -16903,14 +16903,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -16918,14 +16918,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -16933,14 +16933,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.profit": "1.1775", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", + "ECommerce.sales": "23.55", "ECommerce.subCategory": "Fasteners", }, Object { @@ -16948,14 +16948,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -16963,14 +16963,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -16978,14 +16978,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.profit": "60.5488", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", + "ECommerce.sales": "232.88", "ECommerce.subCategory": "Chairs", }, Object { @@ -16993,14 +16993,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, ] @@ -17013,14 +17013,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -17028,14 +17028,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17043,14 +17043,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -17058,14 +17058,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17073,14 +17073,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -17088,14 +17088,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -17103,14 +17103,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -17118,14 +17118,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -17133,14 +17133,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -17148,14 +17148,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, ] @@ -17168,14 +17168,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -17188,14 +17188,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -17203,14 +17203,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17218,14 +17218,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -17233,14 +17233,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17248,14 +17248,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -17263,14 +17263,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -17278,14 +17278,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -17293,14 +17293,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -17308,14 +17308,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -17323,14 +17323,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, Object { @@ -17338,14 +17338,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.profit": "9.9652", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", + "ECommerce.sales": "113.888", "ECommerce.subCategory": "Chairs", }, Object { @@ -17353,14 +17353,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17368,14 +17368,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -17383,14 +17383,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -17398,14 +17398,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -17413,14 +17413,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.profit": "1.1775", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", + "ECommerce.sales": "23.55", "ECommerce.subCategory": "Fasteners", }, Object { @@ -17428,14 +17428,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -17443,14 +17443,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -17458,14 +17458,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.profit": "60.5488", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", + "ECommerce.sales": "232.88", "ECommerce.subCategory": "Chairs", }, Object { @@ -17473,14 +17473,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -17488,14 +17488,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.profit": "21.5824", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -17503,14 +17503,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.profit": "517.4793", + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", + "ECommerce.sales": "2249.91", "ECommerce.subCategory": "Accessories", }, Object { @@ -17518,14 +17518,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.profit": "134.5302", + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", + "ECommerce.sales": "498.26", "ECommerce.subCategory": "Chairs", }, Object { @@ -17533,14 +17533,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -17548,14 +17548,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -17563,14 +17563,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17578,14 +17578,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.profit": "44.975", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", + "ECommerce.sales": "179.9", "ECommerce.subCategory": "Art", }, Object { @@ -17593,14 +17593,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -17608,14 +17608,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.profit": "15.498", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -17623,14 +17623,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.profit": "569.9905", + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", + "ECommerce.sales": "2399.96", "ECommerce.subCategory": "Copiers", }, Object { @@ -17638,14 +17638,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.profit": "-272.58", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", + "ECommerce.sales": "649", "ECommerce.subCategory": "Machines", }, Object { @@ -17653,14 +17653,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.profit": "0.7065", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", + "ECommerce.sales": "14.13", "ECommerce.subCategory": "Fasteners", }, Object { @@ -17668,14 +17668,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17683,14 +17683,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.profit": "467.9922", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", + "ECommerce.sales": "1199.98", "ECommerce.subCategory": "Copiers", }, Object { @@ -17698,14 +17698,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.profit": "129.294", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", + "ECommerce.sales": "2154.9", "ECommerce.subCategory": "Bookcases", }, Object { @@ -17713,14 +17713,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.6", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.profit": "-19.864", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17728,14 +17728,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.profit": "6.1992", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", + "ECommerce.sales": "18.368", "ECommerce.subCategory": "Fasteners", }, Object { @@ -17743,14 +17743,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.profit": "26.9973", + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", + "ECommerce.sales": "239.976", "ECommerce.subCategory": "Phones", }, Object { @@ -17758,14 +17758,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.profit": "225.6", + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", + "ECommerce.sales": "480", "ECommerce.subCategory": "Machines", }, Object { @@ -17773,14 +17773,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.profit": "-7.2", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", + "ECommerce.sales": "120", "ECommerce.subCategory": "Machines", }, Object { @@ -17788,14 +17788,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.1", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.profit": "24.2012", + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", + "ECommerce.sales": "128.124", "ECommerce.subCategory": "Chairs", }, Object { @@ -17803,14 +17803,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.profit": "-5.0098", + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", + "ECommerce.sales": "400.784", "ECommerce.subCategory": "Bookcases", }, Object { @@ -17818,14 +17818,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.4", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.profit": "74.9985", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", + "ECommerce.sales": "899.982", "ECommerce.subCategory": "Copiers", }, Object { @@ -17833,14 +17833,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -17853,14 +17853,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -17868,14 +17868,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17883,14 +17883,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -17898,14 +17898,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -17913,14 +17913,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -17928,14 +17928,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -17943,14 +17943,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -17958,14 +17958,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -17973,14 +17973,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -17988,14 +17988,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, Object { @@ -18003,14 +18003,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.profit": "9.9652", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", + "ECommerce.sales": "113.888", "ECommerce.subCategory": "Chairs", }, Object { @@ -18018,14 +18018,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -18033,14 +18033,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -18048,14 +18048,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -18063,14 +18063,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -18078,14 +18078,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.profit": "1.1775", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", + "ECommerce.sales": "23.55", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18093,14 +18093,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -18108,14 +18108,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -18123,14 +18123,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.profit": "60.5488", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", + "ECommerce.sales": "232.88", "ECommerce.subCategory": "Chairs", }, Object { @@ -18138,14 +18138,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -18153,14 +18153,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.profit": "21.5824", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18168,14 +18168,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.profit": "517.4793", + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", + "ECommerce.sales": "2249.91", "ECommerce.subCategory": "Accessories", }, Object { @@ -18183,14 +18183,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.profit": "134.5302", + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", + "ECommerce.sales": "498.26", "ECommerce.subCategory": "Chairs", }, Object { @@ -18198,14 +18198,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -18213,14 +18213,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -18228,14 +18228,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -18243,14 +18243,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.profit": "44.975", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", + "ECommerce.sales": "179.9", "ECommerce.subCategory": "Art", }, Object { @@ -18258,14 +18258,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -18273,14 +18273,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.profit": "15.498", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18288,14 +18288,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.profit": "569.9905", + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", + "ECommerce.sales": "2399.96", "ECommerce.subCategory": "Copiers", }, Object { @@ -18303,14 +18303,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.profit": "-272.58", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", + "ECommerce.sales": "649", "ECommerce.subCategory": "Machines", }, Object { @@ -18318,14 +18318,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.profit": "0.7065", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", + "ECommerce.sales": "14.13", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18333,14 +18333,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -18348,14 +18348,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.profit": "467.9922", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", + "ECommerce.sales": "1199.98", "ECommerce.subCategory": "Copiers", }, Object { @@ -18363,14 +18363,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.profit": "129.294", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", + "ECommerce.sales": "2154.9", "ECommerce.subCategory": "Bookcases", }, Object { @@ -18378,14 +18378,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.6", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.profit": "-19.864", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -18393,14 +18393,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.profit": "6.1992", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", + "ECommerce.sales": "18.368", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18408,14 +18408,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.profit": "26.9973", + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", + "ECommerce.sales": "239.976", "ECommerce.subCategory": "Phones", }, Object { @@ -18423,14 +18423,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.profit": "225.6", + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", + "ECommerce.sales": "480", "ECommerce.subCategory": "Machines", }, Object { @@ -18438,14 +18438,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.profit": "-7.2", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", + "ECommerce.sales": "120", "ECommerce.subCategory": "Machines", }, Object { @@ -18453,14 +18453,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.1", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.profit": "24.2012", + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", + "ECommerce.sales": "128.124", "ECommerce.subCategory": "Chairs", }, Object { @@ -18468,14 +18468,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.profit": "-5.0098", + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", + "ECommerce.sales": "400.784", "ECommerce.subCategory": "Bookcases", }, Object { @@ -18483,14 +18483,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.4", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.profit": "74.9985", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", + "ECommerce.sales": "899.982", "ECommerce.subCategory": "Copiers", }, Object { @@ -18498,14 +18498,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -18518,14 +18518,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -18533,14 +18533,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -18548,14 +18548,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -18563,14 +18563,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -18578,14 +18578,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18593,14 +18593,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -18608,14 +18608,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -18623,14 +18623,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -18638,14 +18638,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -18653,14 +18653,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, Object { @@ -18668,14 +18668,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.profit": "9.9652", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", + "ECommerce.sales": "113.888", "ECommerce.subCategory": "Chairs", }, Object { @@ -18683,14 +18683,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -18698,14 +18698,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -18713,14 +18713,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -18728,14 +18728,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -18743,14 +18743,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.profit": "1.1775", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", + "ECommerce.sales": "23.55", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18758,14 +18758,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -18773,14 +18773,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -18788,14 +18788,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.profit": "60.5488", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", + "ECommerce.sales": "232.88", "ECommerce.subCategory": "Chairs", }, Object { @@ -18803,14 +18803,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -18818,14 +18818,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.profit": "21.5824", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18833,14 +18833,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.profit": "517.4793", + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", + "ECommerce.sales": "2249.91", "ECommerce.subCategory": "Accessories", }, Object { @@ -18848,14 +18848,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.profit": "134.5302", + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", + "ECommerce.sales": "498.26", "ECommerce.subCategory": "Chairs", }, Object { @@ -18863,14 +18863,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -18878,14 +18878,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -18893,14 +18893,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -18908,14 +18908,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.profit": "44.975", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", + "ECommerce.sales": "179.9", "ECommerce.subCategory": "Art", }, Object { @@ -18923,14 +18923,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -18938,14 +18938,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.profit": "15.498", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18953,14 +18953,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.profit": "569.9905", + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", + "ECommerce.sales": "2399.96", "ECommerce.subCategory": "Copiers", }, Object { @@ -18968,14 +18968,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.profit": "-272.58", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", + "ECommerce.sales": "649", "ECommerce.subCategory": "Machines", }, Object { @@ -18983,14 +18983,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.profit": "0.7065", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", + "ECommerce.sales": "14.13", "ECommerce.subCategory": "Fasteners", }, Object { @@ -18998,14 +18998,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -19013,14 +19013,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.profit": "467.9922", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", + "ECommerce.sales": "1199.98", "ECommerce.subCategory": "Copiers", }, Object { @@ -19028,14 +19028,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.profit": "129.294", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", + "ECommerce.sales": "2154.9", "ECommerce.subCategory": "Bookcases", }, Object { @@ -19043,14 +19043,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.6", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.profit": "-19.864", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -19058,14 +19058,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.profit": "6.1992", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", + "ECommerce.sales": "18.368", "ECommerce.subCategory": "Fasteners", }, Object { @@ -19073,14 +19073,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.profit": "26.9973", + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", + "ECommerce.sales": "239.976", "ECommerce.subCategory": "Phones", }, Object { @@ -19088,14 +19088,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.profit": "225.6", + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", + "ECommerce.sales": "480", "ECommerce.subCategory": "Machines", }, Object { @@ -19103,14 +19103,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.profit": "-7.2", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", + "ECommerce.sales": "120", "ECommerce.subCategory": "Machines", }, Object { @@ -19118,14 +19118,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.1", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.profit": "24.2012", + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", + "ECommerce.sales": "128.124", "ECommerce.subCategory": "Chairs", }, Object { @@ -19133,14 +19133,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.profit": "-5.0098", + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", + "ECommerce.sales": "400.784", "ECommerce.subCategory": "Bookcases", }, Object { @@ -19148,14 +19148,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.4", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.profit": "74.9985", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", + "ECommerce.sales": "899.982", "ECommerce.subCategory": "Copiers", }, Object { @@ -19163,14 +19163,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -20012,31 +20012,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.896", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.368", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.6", }, ] `; @@ -20047,31 +20047,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.376", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.208", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.6", }, ] `; @@ -20082,31 +20082,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.792", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.736", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.2", }, ] `; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/mysql-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/mysql-full.test.ts.snap index 8f5f090fe90ee..4077633938154 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/mysql-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/mysql-full.test.ts.snap @@ -6406,68 +6406,68 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` Array [ Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailMonthAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", }, Object { - "BigECommerce.count": 5, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", }, Object { - "BigECommerce.count": 7, - "BigECommerce.totalCountRetailMonthAgo": 5, + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailMonthAgo": 7, + "BigECommerce.totalCountRetailMonthAgo": "7", "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", }, Object { - "BigECommerce.count": 6, + "BigECommerce.count": "6", "BigECommerce.totalCountRetailMonthAgo": null, "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", }, Object { - "BigECommerce.count": 4, - "BigECommerce.totalCountRetailMonthAgo": 6, + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", }, Object { - "BigECommerce.count": 9, - "BigECommerce.totalCountRetailMonthAgo": 5, + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", }, Object { - "BigECommerce.count": 7, - "BigECommerce.totalCountRetailMonthAgo": 8, + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailMonthAgo": 7, + "BigECommerce.totalCountRetailMonthAgo": "7", "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", }, @@ -6477,194 +6477,194 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` Array [ Object { - "BigECommerce.count": 1, + "BigECommerce.count": "1", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-02-16", "RetailCalendar.retail_date.week": "2020-02-16", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-02-23", "RetailCalendar.retail_date.week": "2020-02-23", }, Object { - "BigECommerce.count": 1, + "BigECommerce.count": "1", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-03-15", "RetailCalendar.retail_date.week": "2020-03-15", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-03-22", "RetailCalendar.retail_date.week": "2020-03-22", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-03-29", "RetailCalendar.retail_date.week": "2020-03-29", }, Object { - "BigECommerce.count": 1, + "BigECommerce.count": "1", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-04-05", "RetailCalendar.retail_date.week": "2020-04-05", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-04-12", "RetailCalendar.retail_date.week": "2020-04-12", }, Object { - "BigECommerce.count": 3, + "BigECommerce.count": "3", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-05-10", "RetailCalendar.retail_date.week": "2020-05-10", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-05-17", "RetailCalendar.retail_date.week": "2020-05-17", }, Object { - "BigECommerce.count": 2, + "BigECommerce.count": "2", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-05-24", "RetailCalendar.retail_date.week": "2020-05-24", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-05-31", "RetailCalendar.retail_date.week": "2020-05-31", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-06-07", "RetailCalendar.retail_date.week": "2020-06-07", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-14", "RetailCalendar.retail_date.week": "2020-06-14", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-21", "RetailCalendar.retail_date.week": "2020-06-21", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-28", "RetailCalendar.retail_date.week": "2020-06-28", }, Object { - "BigECommerce.count": 2, + "BigECommerce.count": "2", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-08-30", "RetailCalendar.retail_date.week": "2020-08-30", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-09-06", "RetailCalendar.retail_date.week": "2020-09-06", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-09-13", "RetailCalendar.retail_date.week": "2020-09-13", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-09-20", "RetailCalendar.retail_date.week": "2020-09-20", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-09-27", "RetailCalendar.retail_date.week": "2020-09-27", }, Object { - "BigECommerce.count": 1, + "BigECommerce.count": "1", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-10-11", "RetailCalendar.retail_date.week": "2020-10-11", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-10-18", "RetailCalendar.retail_date.week": "2020-10-18", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-10-25", "RetailCalendar.retail_date.week": "2020-10-25", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-11-01", "RetailCalendar.retail_date.week": "2020-11-01", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-11-08", "RetailCalendar.retail_date.week": "2020-11-08", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-11-15", "RetailCalendar.retail_date.week": "2020-11-15", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-11-22", "RetailCalendar.retail_date.week": "2020-11-22", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-11-29", "RetailCalendar.retail_date.week": "2020-11-29", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-12-06", "RetailCalendar.retail_date.week": "2020-12-06", }, Object { - "BigECommerce.count": 2, + "BigECommerce.count": "2", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-12-13", "RetailCalendar.retail_date.week": "2020-12-13", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-12-20", "RetailCalendar.retail_date.week": "2020-12-20", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-12-27", "RetailCalendar.retail_date.week": "2020-12-27", }, @@ -8058,8 +8058,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -8073,8 +8073,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -8093,8 +8093,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -8108,8 +8108,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -8123,8 +8123,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -8138,8 +8138,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -8153,8 +8153,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -8168,8 +8168,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -8183,8 +8183,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -8198,8 +8198,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -8220,8 +8220,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -8235,8 +8235,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -8255,8 +8255,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -8270,8 +8270,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -8285,8 +8285,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -8300,8 +8300,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -8315,8 +8315,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -8330,8 +8330,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -8345,8 +8345,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -8360,8 +8360,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -8375,8 +8375,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -8390,8 +8390,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -8405,8 +8405,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -8420,8 +8420,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -8442,8 +8442,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -8457,8 +8457,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -8472,8 +8472,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -8487,8 +8487,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -8507,8 +8507,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -8522,8 +8522,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -8537,8 +8537,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -8552,8 +8552,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -8567,8 +8567,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -8582,8 +8582,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -8597,8 +8597,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -8612,8 +8612,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -8627,8 +8627,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -8642,8 +8642,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -8657,8 +8657,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -8957,68 +8957,68 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` Array [ Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailMonthAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", }, Object { - "BigECommerce.count": 5, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", }, Object { - "BigECommerce.count": 7, - "BigECommerce.totalCountRetailMonthAgo": 5, + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailMonthAgo": 7, + "BigECommerce.totalCountRetailMonthAgo": "7", "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", }, Object { - "BigECommerce.count": 6, + "BigECommerce.count": "6", "BigECommerce.totalCountRetailMonthAgo": null, "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", }, Object { - "BigECommerce.count": 4, - "BigECommerce.totalCountRetailMonthAgo": 6, + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", }, Object { - "BigECommerce.count": 9, - "BigECommerce.totalCountRetailMonthAgo": 5, + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", }, Object { - "BigECommerce.count": 7, - "BigECommerce.totalCountRetailMonthAgo": 8, + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailMonthAgo": 7, + "BigECommerce.totalCountRetailMonthAgo": "7", "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", }, @@ -9028,194 +9028,194 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` Array [ Object { - "BigECommerce.count": 1, + "BigECommerce.count": "1", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-02-16", "RetailCalendar.retail_date.week": "2020-02-16", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-02-23", "RetailCalendar.retail_date.week": "2020-02-23", }, Object { - "BigECommerce.count": 1, + "BigECommerce.count": "1", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-03-15", "RetailCalendar.retail_date.week": "2020-03-15", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-03-22", "RetailCalendar.retail_date.week": "2020-03-22", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-03-29", "RetailCalendar.retail_date.week": "2020-03-29", }, Object { - "BigECommerce.count": 1, + "BigECommerce.count": "1", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-04-05", "RetailCalendar.retail_date.week": "2020-04-05", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-04-12", "RetailCalendar.retail_date.week": "2020-04-12", }, Object { - "BigECommerce.count": 3, + "BigECommerce.count": "3", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-05-10", "RetailCalendar.retail_date.week": "2020-05-10", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-05-17", "RetailCalendar.retail_date.week": "2020-05-17", }, Object { - "BigECommerce.count": 2, + "BigECommerce.count": "2", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-05-24", "RetailCalendar.retail_date.week": "2020-05-24", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-05-31", "RetailCalendar.retail_date.week": "2020-05-31", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-06-07", "RetailCalendar.retail_date.week": "2020-06-07", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-14", "RetailCalendar.retail_date.week": "2020-06-14", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-21", "RetailCalendar.retail_date.week": "2020-06-21", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-28", "RetailCalendar.retail_date.week": "2020-06-28", }, Object { - "BigECommerce.count": 2, + "BigECommerce.count": "2", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-08-30", "RetailCalendar.retail_date.week": "2020-08-30", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-09-06", "RetailCalendar.retail_date.week": "2020-09-06", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-09-13", "RetailCalendar.retail_date.week": "2020-09-13", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-09-20", "RetailCalendar.retail_date.week": "2020-09-20", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-09-27", "RetailCalendar.retail_date.week": "2020-09-27", }, Object { - "BigECommerce.count": 1, + "BigECommerce.count": "1", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-10-11", "RetailCalendar.retail_date.week": "2020-10-11", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-10-18", "RetailCalendar.retail_date.week": "2020-10-18", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-10-25", "RetailCalendar.retail_date.week": "2020-10-25", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-11-01", "RetailCalendar.retail_date.week": "2020-11-01", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-11-08", "RetailCalendar.retail_date.week": "2020-11-08", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-11-15", "RetailCalendar.retail_date.week": "2020-11-15", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-11-22", "RetailCalendar.retail_date.week": "2020-11-22", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-11-29", "RetailCalendar.retail_date.week": "2020-11-29", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-12-06", "RetailCalendar.retail_date.week": "2020-12-06", }, Object { - "BigECommerce.count": 2, + "BigECommerce.count": "2", "BigECommerce.totalCountRetailWeekAgo": null, "RetailCalendar.retail_date": "2020-12-13", "RetailCalendar.retail_date.week": "2020-12-13", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-12-20", "RetailCalendar.retail_date.week": "2020-12-20", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-12-27", "RetailCalendar.retail_date.week": "2020-12-27", }, @@ -9225,8 +9225,8 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` Array [ Object { - "BigECommerce.count": 42, - "BigECommerce.totalCountRetailYearAgo": 2, + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", "RetailCalendar.retail_date": "2020-02-02", "RetailCalendar.retail_date.year": "2020-02-02", }, @@ -11324,7 +11324,7 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver querying BigECommerce: rolling window YTD without granularity 1`] = ` Array [ Object { - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, ] `; @@ -12376,107 +12376,107 @@ exports[`Queries with the @cubejs-backend/mysql-driver querying ECommerce: count Array [ Object { "ECommerce.city": "Columbus", - "ECommerce.count": 12, + "ECommerce.count": "12", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 5, + "ECommerce.count": "5", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 2, + "ECommerce.count": "2", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 2, + "ECommerce.count": "2", }, Object { "ECommerce.city": "San Francisco", - "ECommerce.count": 2, + "ECommerce.count": "2", }, Object { "ECommerce.city": "Arlington", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Auburn", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Bakersfield", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Baltimore", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Bowling", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Dallas", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Decatur", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Glendale", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Houston", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Lafayette", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Lakewood", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Lorain", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Los Angeles", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Louisville", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Marion", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Morristown", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Oakland", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Olympia", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Omaha", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Provo", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Vancouver", - "ECommerce.count": 1, + "ECommerce.count": "1", }, ] `; @@ -12484,52 +12484,52 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver querying ECommerce: count by month + order with non-UTC timezone (Asia/Kolkata) 1`] = ` Array [ Object { - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-01-01T00:00:00.000", }, Object { - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-02-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-02-01T00:00:00.000", }, Object { - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-03-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-03-01T00:00:00.000", }, Object { - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-04-01T00:00:00.000", }, Object { - "ECommerce.count": 5, + "ECommerce.count": "5", "ECommerce.customOrderDateNoPreAgg": "2020-05-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-05-01T00:00:00.000", }, Object { - "ECommerce.count": 7, + "ECommerce.count": "7", "ECommerce.customOrderDateNoPreAgg": "2020-06-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-06-01T00:00:00.000", }, Object { - "ECommerce.count": 6, + "ECommerce.count": "6", "ECommerce.customOrderDateNoPreAgg": "2020-09-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-09-01T00:00:00.000", }, Object { - "ECommerce.count": 4, + "ECommerce.count": "4", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-10-01T00:00:00.000", }, Object { - "ECommerce.count": 9, + "ECommerce.count": "9", "ECommerce.customOrderDateNoPreAgg": "2020-11-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-11-01T00:00:00.000", }, Object { - "ECommerce.count": 7, + "ECommerce.count": "7", "ECommerce.customOrderDateNoPreAgg": "2020-12-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-12-01T00:00:00.000", }, @@ -12548,8 +12548,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -12563,8 +12563,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -12578,8 +12578,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -12593,8 +12593,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -12608,8 +12608,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -12623,8 +12623,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -12638,8 +12638,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -12653,8 +12653,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -12668,8 +12668,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -12683,8 +12683,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -12703,8 +12703,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -12718,8 +12718,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -12733,8 +12733,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -12748,8 +12748,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -12763,8 +12763,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -12778,8 +12778,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -12793,8 +12793,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -12808,8 +12808,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -12823,8 +12823,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -12838,8 +12838,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -12858,8 +12858,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -12873,8 +12873,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -12888,8 +12888,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -12903,8 +12903,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -12918,8 +12918,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -12933,8 +12933,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -12948,8 +12948,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -12963,8 +12963,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -12978,8 +12978,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -12993,8 +12993,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -13013,8 +13013,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -13028,8 +13028,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -13043,8 +13043,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -13058,8 +13058,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -13073,8 +13073,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -13088,8 +13088,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -13103,8 +13103,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -13118,8 +13118,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -13133,8 +13133,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -13148,8 +13148,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -13163,8 +13163,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -13178,8 +13178,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -13193,8 +13193,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -13208,8 +13208,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -13223,8 +13223,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -13238,8 +13238,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -13253,8 +13253,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -13268,8 +13268,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -13283,8 +13283,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -13298,8 +13298,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -13313,8 +13313,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -13328,8 +13328,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -13343,8 +13343,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -13358,8 +13358,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -13373,8 +13373,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -13388,8 +13388,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -13403,8 +13403,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -13418,8 +13418,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -13433,8 +13433,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -13448,8 +13448,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -13463,8 +13463,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -13478,8 +13478,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -13493,8 +13493,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -13508,8 +13508,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -13523,8 +13523,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -13538,8 +13538,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -13553,8 +13553,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -13568,8 +13568,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -13583,8 +13583,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -13598,8 +13598,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -13613,8 +13613,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -13628,8 +13628,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -13643,8 +13643,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -13658,8 +13658,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -13678,8 +13678,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -13693,8 +13693,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -13708,8 +13708,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -13723,8 +13723,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -13738,8 +13738,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -13753,8 +13753,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -13768,8 +13768,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -13783,8 +13783,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -13798,8 +13798,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -13813,8 +13813,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -13828,8 +13828,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -13843,8 +13843,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -13858,8 +13858,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -13873,8 +13873,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -13888,8 +13888,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -13903,8 +13903,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -13918,8 +13918,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -13933,8 +13933,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -13948,8 +13948,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -13963,8 +13963,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -13978,8 +13978,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -13993,8 +13993,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -14008,8 +14008,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -14023,8 +14023,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -14038,8 +14038,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -14053,8 +14053,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14068,8 +14068,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -14083,8 +14083,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14098,8 +14098,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -14113,8 +14113,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -14128,8 +14128,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -14143,8 +14143,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -14158,8 +14158,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -14173,8 +14173,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -14188,8 +14188,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -14203,8 +14203,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14218,8 +14218,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -14233,8 +14233,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -14248,8 +14248,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -14263,8 +14263,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -14278,8 +14278,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -14293,8 +14293,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -14308,8 +14308,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -14323,8 +14323,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -14343,8 +14343,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14358,8 +14358,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -14373,8 +14373,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -14388,8 +14388,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14403,8 +14403,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -14418,8 +14418,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -14433,8 +14433,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -14448,8 +14448,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -14463,8 +14463,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14478,8 +14478,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -14493,8 +14493,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -14508,8 +14508,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14523,8 +14523,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14538,8 +14538,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14553,8 +14553,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14568,8 +14568,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -14583,8 +14583,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14598,8 +14598,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -14613,8 +14613,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -14628,8 +14628,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14643,8 +14643,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -14658,8 +14658,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -14673,8 +14673,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -14688,8 +14688,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -14703,8 +14703,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -14718,8 +14718,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14733,8 +14733,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -14748,8 +14748,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14763,8 +14763,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -14778,8 +14778,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -14793,8 +14793,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -14808,8 +14808,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -14823,8 +14823,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -14838,8 +14838,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -14853,8 +14853,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -14868,8 +14868,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14883,8 +14883,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -14898,8 +14898,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -14913,8 +14913,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -14928,8 +14928,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -14943,8 +14943,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -14958,8 +14958,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -14973,8 +14973,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -14988,8 +14988,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -16243,31 +16243,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98000", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.89600", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.36800", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96000", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.60000", }, ] `; @@ -16278,31 +16278,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88000", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.37600", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.20800", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76000", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.60000", }, ] `; @@ -16313,31 +16313,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96000", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.79200", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.73600", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92000", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.20000", }, ] `; @@ -16569,187 +16569,187 @@ exports[`Queries with the @cubejs-backend/mysql-driver querying custom granulari Array [ Object { "ECommerce.city": "Baltimore", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Decatur", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Houston", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Lorain", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Louisville", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Omaha", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Arlington", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Auburn", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Bakersfield", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Bowling", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 7, + "ECommerce.count": "7", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Dallas", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Glendale", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Lakewood", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Los Angeles", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Marion", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Morristown", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 3, + "ECommerce.count": "3", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Olympia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Provo", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "San Francisco", - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Vancouver", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 4, + "ECommerce.count": "4", "ECommerce.customOrderDateNoPreAgg": "2021-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2021-01-01T00:00:00.000", }, Object { "ECommerce.city": "Lafayette", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2021-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2021-01-01T00:00:00.000", }, Object { "ECommerce.city": "Oakland", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2021-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2021-01-01T00:00:00.000", }, @@ -16759,17 +16759,17 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver querying custom granularities ECommerce: count by half_year + no dimension 1`] = ` Array [ Object { - "ECommerce.count": 11, + "ECommerce.count": "11", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { - "ECommerce.count": 27, + "ECommerce.count": "27", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { - "ECommerce.count": 6, + "ECommerce.count": "6", "ECommerce.customOrderDateNoPreAgg": "2021-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2021-01-01T00:00:00.000", }, @@ -16780,181 +16780,181 @@ exports[`Queries with the @cubejs-backend/mysql-driver querying custom granulari Array [ Object { "ECommerce.city": "Decatur", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { "ECommerce.city": "Lorain", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { "ECommerce.city": "Auburn", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Baltimore", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 3, + "ECommerce.count": "3", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Houston", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Los Angeles", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Louisville", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 4, + "ECommerce.count": "4", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Olympia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Omaha", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Arlington", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Bakersfield", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Bowling", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 9, + "ECommerce.count": "9", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Dallas", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Glendale", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Lafayette", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Lakewood", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Marion", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Morristown", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Oakland", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Provo", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "San Francisco", - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Vancouver", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, @@ -16964,17 +16964,17 @@ Array [ exports[`Queries with the @cubejs-backend/mysql-driver querying custom granularities ECommerce: count by half_year_by_1st_april + no dimension 1`] = ` Array [ Object { - "ECommerce.count": 3, + "ECommerce.count": "3", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { - "ECommerce.count": 16, + "ECommerce.count": "16", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { - "ECommerce.count": 25, + "ECommerce.count": "25", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, @@ -17026,27 +17026,27 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 8, + "ECommerce.rollingCountByLeading": "8", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 12, + "ECommerce.rollingCountByLeading": "12", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 6, + "ECommerce.rollingCountByLeading": "6", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 19, + "ECommerce.rollingCountByLeading": "19", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 16, + "ECommerce.rollingCountByLeading": "16", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/oracle-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/oracle-full.test.ts.snap index 30557044641fe..ae518ace8bacf 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/oracle-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/oracle-full.test.ts.snap @@ -6415,68 +6415,68 @@ Array [ exports[`Queries with the @cubejs-backend/oracle-driver Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailMonthAgo 1`] = ` Array [ Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-02-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-02-01T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-03-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-03-01T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailMonthAgo": 2, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailMonthAgo": "2", "RetailCalendar.retail_date": "2020-04-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-04-01T00:00:00.000", }, Object { - "BigECommerce.count": 5, - "BigECommerce.totalCountRetailMonthAgo": 1, + "BigECommerce.count": "5", + "BigECommerce.totalCountRetailMonthAgo": "1", "RetailCalendar.retail_date": "2020-05-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-05-01T00:00:00.000", }, Object { - "BigECommerce.count": 7, - "BigECommerce.totalCountRetailMonthAgo": 5, + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "5", "RetailCalendar.retail_date": "2020-06-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-06-01T00:00:00.000", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailMonthAgo": 7, + "BigECommerce.totalCountRetailMonthAgo": "7", "RetailCalendar.retail_date": "2020-07-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-07-01T00:00:00.000", }, Object { - "BigECommerce.count": 6, + "BigECommerce.count": "6", "BigECommerce.totalCountRetailMonthAgo": null, "RetailCalendar.retail_date": "2020-09-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-09-01T00:00:00.000", }, Object { - "BigECommerce.count": 4, - "BigECommerce.totalCountRetailMonthAgo": 6, + "BigECommerce.count": "4", + "BigECommerce.totalCountRetailMonthAgo": "6", "RetailCalendar.retail_date": "2020-10-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-10-01T00:00:00.000", }, Object { - "BigECommerce.count": 9, - "BigECommerce.totalCountRetailMonthAgo": 5, + "BigECommerce.count": "9", + "BigECommerce.totalCountRetailMonthAgo": "5", "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-11-01T00:00:00.000", }, Object { - "BigECommerce.count": 7, - "BigECommerce.totalCountRetailMonthAgo": 8, + "BigECommerce.count": "7", + "BigECommerce.totalCountRetailMonthAgo": "8", "RetailCalendar.retail_date": "2020-12-01T00:00:00.000", "RetailCalendar.retail_date.month": "2020-12-01T00:00:00.000", }, Object { "BigECommerce.count": null, - "BigECommerce.totalCountRetailMonthAgo": 7, + "BigECommerce.totalCountRetailMonthAgo": "7", "RetailCalendar.retail_date": "2021-01-01T00:00:00.000", "RetailCalendar.retail_date.month": "2021-01-01T00:00:00.000", }, @@ -6486,146 +6486,146 @@ Array [ exports[`Queries with the @cubejs-backend/oracle-driver Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo 1`] = ` Array [ Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-02-16T00:00:00.000", "RetailCalendar.retail_date.week": "2020-02-16T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-03-15T00:00:00.000", "RetailCalendar.retail_date.week": "2020-03-15T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-03-22T00:00:00.000", "RetailCalendar.retail_date.week": "2020-03-22T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-04-05T00:00:00.000", "RetailCalendar.retail_date.week": "2020-04-05T00:00:00.000", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-05-10T00:00:00.000", "RetailCalendar.retail_date.week": "2020-05-10T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-05-24T00:00:00.000", "RetailCalendar.retail_date.week": "2020-05-24T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-05-31T00:00:00.000", "RetailCalendar.retail_date.week": "2020-05-31T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-07T00:00:00.000", "RetailCalendar.retail_date.week": "2020-06-07T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-14T00:00:00.000", "RetailCalendar.retail_date.week": "2020-06-14T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-06-21T00:00:00.000", "RetailCalendar.retail_date.week": "2020-06-21T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-08-30T00:00:00.000", "RetailCalendar.retail_date.week": "2020-08-30T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-09-06T00:00:00.000", "RetailCalendar.retail_date.week": "2020-09-06T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-09-13T00:00:00.000", "RetailCalendar.retail_date.week": "2020-09-13T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-09-20T00:00:00.000", "RetailCalendar.retail_date.week": "2020-09-20T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-10-11T00:00:00.000", "RetailCalendar.retail_date.week": "2020-10-11T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-10-18T00:00:00.000", "RetailCalendar.retail_date.week": "2020-10-18T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-10-25T00:00:00.000", "RetailCalendar.retail_date.week": "2020-10-25T00:00:00.000", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-11-01T00:00:00.000", "RetailCalendar.retail_date.week": "2020-11-01T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-11-08T00:00:00.000", "RetailCalendar.retail_date.week": "2020-11-08T00:00:00.000", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-11-15T00:00:00.000", "RetailCalendar.retail_date.week": "2020-11-15T00:00:00.000", }, Object { - "BigECommerce.count": 1, - "BigECommerce.totalCountRetailWeekAgo": 1, + "BigECommerce.count": "1", + "BigECommerce.totalCountRetailWeekAgo": "1", "RetailCalendar.retail_date": "2020-11-22T00:00:00.000", "RetailCalendar.retail_date.week": "2020-11-22T00:00:00.000", }, Object { - "BigECommerce.count": 3, - "BigECommerce.totalCountRetailWeekAgo": 3, + "BigECommerce.count": "3", + "BigECommerce.totalCountRetailWeekAgo": "3", "RetailCalendar.retail_date": "2020-11-29T00:00:00.000", "RetailCalendar.retail_date.week": "2020-11-29T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-12-13T00:00:00.000", "RetailCalendar.retail_date.week": "2020-12-13T00:00:00.000", }, Object { - "BigECommerce.count": 2, - "BigECommerce.totalCountRetailWeekAgo": 2, + "BigECommerce.count": "2", + "BigECommerce.totalCountRetailWeekAgo": "2", "RetailCalendar.retail_date": "2020-12-20T00:00:00.000", "RetailCalendar.retail_date.week": "2020-12-20T00:00:00.000", }, @@ -8014,14 +8014,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -8029,14 +8029,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, ] @@ -8049,14 +8049,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -8064,14 +8064,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8079,14 +8079,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8094,14 +8094,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8109,14 +8109,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -8124,14 +8124,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8139,14 +8139,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8154,14 +8154,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.6", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.profit": "-19.864", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, ] @@ -8176,14 +8176,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8191,14 +8191,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.profit": "-7.2", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", + "ECommerce.sales": "120", "ECommerce.subCategory": "Machines", }, ] @@ -8211,14 +8211,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -8226,14 +8226,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8241,14 +8241,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -8256,14 +8256,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, Object { @@ -8271,14 +8271,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8286,14 +8286,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -8301,14 +8301,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -8316,14 +8316,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -8331,14 +8331,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -8346,14 +8346,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -8361,14 +8361,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.profit": "0.7065", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", + "ECommerce.sales": "14.13", "ECommerce.subCategory": "Fasteners", }, Object { @@ -8376,14 +8376,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.profit": "129.294", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", + "ECommerce.sales": "2154.9", "ECommerce.subCategory": "Bookcases", }, ] @@ -8398,14 +8398,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -8413,14 +8413,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -8428,14 +8428,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -8443,14 +8443,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, ] @@ -8463,14 +8463,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -8478,14 +8478,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -8493,14 +8493,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -8508,14 +8508,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -8523,14 +8523,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.profit": "44.975", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", + "ECommerce.sales": "179.9", "ECommerce.subCategory": "Art", }, Object { @@ -8538,14 +8538,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -8553,14 +8553,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.profit": "15.498", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -8568,14 +8568,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -8583,14 +8583,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.profit": "467.9922", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", + "ECommerce.sales": "1199.98", "ECommerce.subCategory": "Copiers", }, Object { @@ -8598,14 +8598,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.4", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.profit": "74.9985", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", + "ECommerce.sales": "899.982", "ECommerce.subCategory": "Copiers", }, Object { @@ -8613,14 +8613,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -8918,8 +8918,8 @@ Array [ exports[`Queries with the @cubejs-backend/oracle-driver querying BigECommerce with Retail Calendar: totalCountRetailYearAgo 1`] = ` Array [ Object { - "BigECommerce.count": 42, - "BigECommerce.totalCountRetailYearAgo": 2, + "BigECommerce.count": "42", + "BigECommerce.totalCountRetailYearAgo": "2", "RetailCalendar.retail_date": "2020-02-02T00:00:00.000", "RetailCalendar.retail_date.year": "2020-02-02T00:00:00.000", }, @@ -9197,12 +9197,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.totalSales": 48.896, + "BigECommerce.totalSales": "48.896", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.totalSales": 232.88, + "BigECommerce.totalSales": "232.88", }, ] `; @@ -9833,427 +9833,427 @@ Array [ "BigECommerce.orderDate.day": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-02T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-02T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-03T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-03T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-04T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-04T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-05T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-05T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-06T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-06T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-07T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-07T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-08T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-08T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-09T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-09T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-10T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-10T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-11T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-11T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-12T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-12T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-13T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-13T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-14T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-14T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-15T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-15T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-16T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-16T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-17T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-17T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-18T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-18T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-19T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-19T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-20T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-20T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-21T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-21T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-22T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-22T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-23T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-23T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-24T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-25T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-25T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-26T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-28T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-29T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-30T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-31T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-31T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-02T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-02T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-03T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-03T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-04T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-04T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-05T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-05T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-06T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-06T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-07T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-07T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-08T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-08T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-09T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-09T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-10T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-10T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-11T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-11T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-12T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-12T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-13T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-13T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-14T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-14T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-15T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-15T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-16T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-16T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-17T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-17T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-18T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-18T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-19T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-19T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-20T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-20T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-21T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-21T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-22T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-22T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-23T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-23T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-25T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-25T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-26T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-27T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-28T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-29T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.day": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, ] `; @@ -10265,427 +10265,427 @@ Array [ "BigECommerce.orderDate.day": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-02T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-02T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-03T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-03T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-04T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-04T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-05T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-05T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2019-12-30T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-06T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-06T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-07T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-07T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-08T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-08T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-09T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-09T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-10T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-10T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-11T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-11T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-12T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-12T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-06T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-13T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-13T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-14T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-14T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-15T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-15T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-16T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-16T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-17T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-17T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-18T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-18T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-19T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-19T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-13T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-20T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-20T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-21T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-21T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-22T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-22T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 1, + "BigECommerce.rollingCountYTD": "1", }, Object { "BigECommerce.orderDate": "2020-01-23T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-23T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-24T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-25T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-25T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-26T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-20T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-28T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-29T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-30T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-30T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-01-31T00:00:00.000", "BigECommerce.orderDate.day": "2020-01-31T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-02T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-02T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-01-27T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-03T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-03T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-04T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-04T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-05T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-05T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-06T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-06T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-07T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-07T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-08T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-08T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-09T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-09T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-03T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-10T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-10T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-11T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-11T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-12T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-12T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-13T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-13T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-14T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-14T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-15T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-15T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-16T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-16T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-10T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-17T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-17T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-18T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-18T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-19T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-19T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-20T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-20T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-21T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-21T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-22T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-22T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-23T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-23T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-17T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-24T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-25T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-25T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-26T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-26T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-27T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-27T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-28T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-28T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-02-29T00:00:00.000", "BigECommerce.orderDate.day": "2020-02-29T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.day": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.week": "2020-02-24T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, ] `; @@ -10695,62 +10695,62 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 2, + "BigECommerce.rollingCountYTD": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 5, + "BigECommerce.rollingCountYTD": "5", }, Object { "BigECommerce.orderDate": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 6, + "BigECommerce.rollingCountYTD": "6", }, Object { "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 11, + "BigECommerce.rollingCountYTD": "11", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-08-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-08-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 18, + "BigECommerce.rollingCountYTD": "18", }, Object { "BigECommerce.orderDate": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 24, + "BigECommerce.rollingCountYTD": "24", }, Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 28, + "BigECommerce.rollingCountYTD": "28", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 37, + "BigECommerce.rollingCountYTD": "37", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.rollingCountYTD": 44, + "BigECommerce.rollingCountYTD": "44", }, ] `; @@ -10758,7 +10758,7 @@ Array [ exports[`Queries with the @cubejs-backend/oracle-driver querying BigECommerce: rolling window YTD without granularity 1`] = ` Array [ Object { - "BigECommerce.rollingCountYTD": 3, + "BigECommerce.rollingCountYTD": "3", }, ] `; @@ -10813,7 +10813,7 @@ Array [ Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountBy2Day": 1, + "BigECommerce.rollingCountBy2Day": "1", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", @@ -10833,37 +10833,37 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 2, + "BigECommerce.rollingCountBy2Month": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 3, + "BigECommerce.rollingCountBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 3, + "BigECommerce.rollingCountBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 3, + "BigECommerce.rollingCountBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 6, + "BigECommerce.rollingCountBy2Month": "6", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 12, + "BigECommerce.rollingCountBy2Month": "12", }, Object { "BigECommerce.orderDate": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 7, + "BigECommerce.rollingCountBy2Month": "7", }, Object { "BigECommerce.orderDate": "2020-08-01T00:00:00.000", @@ -10873,22 +10873,22 @@ Array [ Object { "BigECommerce.orderDate": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 6, + "BigECommerce.rollingCountBy2Month": "6", }, Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 10, + "BigECommerce.rollingCountBy2Month": "10", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 13, + "BigECommerce.rollingCountBy2Month": "13", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.rollingCountBy2Month": 16, + "BigECommerce.rollingCountBy2Month": "16", }, ] `; @@ -10966,32 +10966,32 @@ Array [ "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 2, + "BigECommerce.customersCountPrev1Month": "2", "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 1, + "BigECommerce.customersCountPrev1Month": "1", "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 2, + "BigECommerce.customersCountPrev1Month": "2", "BigECommerce.orderDate": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 1, + "BigECommerce.customersCountPrev1Month": "1", "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 5, + "BigECommerce.customersCountPrev1Month": "5", "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 7, + "BigECommerce.customersCountPrev1Month": "7", "BigECommerce.orderDate": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", }, @@ -11006,17 +11006,17 @@ Array [ "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 6, + "BigECommerce.customersCountPrev1Month": "6", "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 4, + "BigECommerce.customersCountPrev1Month": "4", "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", }, Object { - "BigECommerce.customersCountPrev1Month": 9, + "BigECommerce.customersCountPrev1Month": "9", "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", }, @@ -11745,107 +11745,107 @@ exports[`Queries with the @cubejs-backend/oracle-driver querying ECommerce: coun Array [ Object { "ECommerce.city": "Columbus", - "ECommerce.count": 12, + "ECommerce.count": "12", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 5, + "ECommerce.count": "5", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 2, + "ECommerce.count": "2", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 2, + "ECommerce.count": "2", }, Object { "ECommerce.city": "San Francisco", - "ECommerce.count": 2, + "ECommerce.count": "2", }, Object { "ECommerce.city": "Arlington", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Auburn", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Bakersfield", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Baltimore", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Bowling", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Dallas", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Decatur", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Glendale", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Houston", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Lafayette", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Lakewood", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Lorain", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Los Angeles", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Louisville", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Marion", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Morristown", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Oakland", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Olympia", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Omaha", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Provo", - "ECommerce.count": 1, + "ECommerce.count": "1", }, Object { "ECommerce.city": "Vancouver", - "ECommerce.count": 1, + "ECommerce.count": "1", }, ] `; @@ -11853,52 +11853,52 @@ Array [ exports[`Queries with the @cubejs-backend/oracle-driver querying ECommerce: count by month + order with non-UTC timezone (Asia/Kolkata) 1`] = ` Array [ Object { - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-01-01T00:00:00.000", }, Object { - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-02-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-02-01T00:00:00.000", }, Object { - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-03-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-03-01T00:00:00.000", }, Object { - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-04-01T00:00:00.000", }, Object { - "ECommerce.count": 5, + "ECommerce.count": "5", "ECommerce.customOrderDateNoPreAgg": "2020-05-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-05-01T00:00:00.000", }, Object { - "ECommerce.count": 7, + "ECommerce.count": "7", "ECommerce.customOrderDateNoPreAgg": "2020-06-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-06-01T00:00:00.000", }, Object { - "ECommerce.count": 6, + "ECommerce.count": "6", "ECommerce.customOrderDateNoPreAgg": "2020-09-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-09-01T00:00:00.000", }, Object { - "ECommerce.count": 4, + "ECommerce.count": "4", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-10-01T00:00:00.000", }, Object { - "ECommerce.count": 9, + "ECommerce.count": "9", "ECommerce.customOrderDateNoPreAgg": "2020-11-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-11-01T00:00:00.000", }, Object { - "ECommerce.count": 7, + "ECommerce.count": "7", "ECommerce.customOrderDateNoPreAgg": "2020-12-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.month": "2020-12-01T00:00:00.000", }, @@ -11912,14 +11912,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -11927,14 +11927,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -11942,14 +11942,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -11957,14 +11957,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -11972,14 +11972,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -11987,14 +11987,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12002,14 +12002,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -12017,14 +12017,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12032,14 +12032,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -12047,14 +12047,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, ] @@ -12067,14 +12067,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.profit": "9.9652", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", + "ECommerce.sales": "113.888", "ECommerce.subCategory": "Chairs", }, Object { @@ -12082,14 +12082,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12097,14 +12097,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -12112,14 +12112,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -12127,14 +12127,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -12142,14 +12142,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.profit": "1.1775", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", + "ECommerce.sales": "23.55", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12157,14 +12157,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -12172,14 +12172,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -12187,14 +12187,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.profit": "60.5488", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", + "ECommerce.sales": "232.88", "ECommerce.subCategory": "Chairs", }, Object { @@ -12202,14 +12202,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, ] @@ -12222,14 +12222,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -12237,14 +12237,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12252,14 +12252,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -12267,14 +12267,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12282,14 +12282,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12297,14 +12297,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12312,14 +12312,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -12327,14 +12327,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12342,14 +12342,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -12357,14 +12357,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, ] @@ -12377,14 +12377,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -12397,14 +12397,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -12412,14 +12412,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12427,14 +12427,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -12442,14 +12442,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12457,14 +12457,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12472,14 +12472,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12487,14 +12487,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -12502,14 +12502,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -12517,14 +12517,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -12532,14 +12532,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, Object { @@ -12547,14 +12547,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.profit": "9.9652", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", + "ECommerce.sales": "113.888", "ECommerce.subCategory": "Chairs", }, Object { @@ -12562,14 +12562,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12577,14 +12577,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -12592,14 +12592,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -12607,14 +12607,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -12622,14 +12622,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.profit": "1.1775", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", + "ECommerce.sales": "23.55", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12637,14 +12637,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -12652,14 +12652,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -12667,14 +12667,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.profit": "60.5488", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", + "ECommerce.sales": "232.88", "ECommerce.subCategory": "Chairs", }, Object { @@ -12682,14 +12682,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -12697,14 +12697,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.profit": "21.5824", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12712,14 +12712,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.profit": "517.4793", + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", + "ECommerce.sales": "2249.91", "ECommerce.subCategory": "Accessories", }, Object { @@ -12727,14 +12727,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.profit": "134.5302", + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", + "ECommerce.sales": "498.26", "ECommerce.subCategory": "Chairs", }, Object { @@ -12742,14 +12742,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -12757,14 +12757,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -12772,14 +12772,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12787,14 +12787,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.profit": "44.975", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", + "ECommerce.sales": "179.9", "ECommerce.subCategory": "Art", }, Object { @@ -12802,14 +12802,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -12817,14 +12817,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.profit": "15.498", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12832,14 +12832,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.profit": "569.9905", + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", + "ECommerce.sales": "2399.96", "ECommerce.subCategory": "Copiers", }, Object { @@ -12847,14 +12847,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.profit": "-272.58", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", + "ECommerce.sales": "649", "ECommerce.subCategory": "Machines", }, Object { @@ -12862,14 +12862,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.profit": "0.7065", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", + "ECommerce.sales": "14.13", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12877,14 +12877,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12892,14 +12892,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.profit": "467.9922", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", + "ECommerce.sales": "1199.98", "ECommerce.subCategory": "Copiers", }, Object { @@ -12907,14 +12907,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.profit": "129.294", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", + "ECommerce.sales": "2154.9", "ECommerce.subCategory": "Bookcases", }, Object { @@ -12922,14 +12922,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.6", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.profit": "-19.864", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -12937,14 +12937,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.profit": "6.1992", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", + "ECommerce.sales": "18.368", "ECommerce.subCategory": "Fasteners", }, Object { @@ -12952,14 +12952,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.profit": "26.9973", + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", + "ECommerce.sales": "239.976", "ECommerce.subCategory": "Phones", }, Object { @@ -12967,14 +12967,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.profit": "225.6", + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", + "ECommerce.sales": "480", "ECommerce.subCategory": "Machines", }, Object { @@ -12982,14 +12982,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.profit": "-7.2", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", + "ECommerce.sales": "120", "ECommerce.subCategory": "Machines", }, Object { @@ -12997,14 +12997,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.1", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.profit": "24.2012", + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", + "ECommerce.sales": "128.124", "ECommerce.subCategory": "Chairs", }, Object { @@ -13012,14 +13012,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.profit": "-5.0098", + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", + "ECommerce.sales": "400.784", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13027,14 +13027,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.4", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.profit": "74.9985", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", + "ECommerce.sales": "899.982", "ECommerce.subCategory": "Copiers", }, Object { @@ -13042,14 +13042,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -13062,14 +13062,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -13077,14 +13077,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13092,14 +13092,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -13107,14 +13107,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13122,14 +13122,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13137,14 +13137,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -13152,14 +13152,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -13167,14 +13167,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -13182,14 +13182,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13197,14 +13197,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, Object { @@ -13212,14 +13212,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.profit": "9.9652", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", + "ECommerce.sales": "113.888", "ECommerce.subCategory": "Chairs", }, Object { @@ -13227,14 +13227,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13242,14 +13242,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -13257,14 +13257,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -13272,14 +13272,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -13287,14 +13287,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.profit": "1.1775", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", + "ECommerce.sales": "23.55", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13302,14 +13302,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -13317,14 +13317,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -13332,14 +13332,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.profit": "60.5488", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", + "ECommerce.sales": "232.88", "ECommerce.subCategory": "Chairs", }, Object { @@ -13347,14 +13347,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -13362,14 +13362,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.profit": "21.5824", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13377,14 +13377,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.profit": "517.4793", + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", + "ECommerce.sales": "2249.91", "ECommerce.subCategory": "Accessories", }, Object { @@ -13392,14 +13392,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.profit": "134.5302", + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", + "ECommerce.sales": "498.26", "ECommerce.subCategory": "Chairs", }, Object { @@ -13407,14 +13407,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -13422,14 +13422,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -13437,14 +13437,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13452,14 +13452,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.profit": "44.975", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", + "ECommerce.sales": "179.9", "ECommerce.subCategory": "Art", }, Object { @@ -13467,14 +13467,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -13482,14 +13482,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.profit": "15.498", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13497,14 +13497,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.profit": "569.9905", + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", + "ECommerce.sales": "2399.96", "ECommerce.subCategory": "Copiers", }, Object { @@ -13512,14 +13512,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.profit": "-272.58", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", + "ECommerce.sales": "649", "ECommerce.subCategory": "Machines", }, Object { @@ -13527,14 +13527,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.profit": "0.7065", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", + "ECommerce.sales": "14.13", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13542,14 +13542,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13557,14 +13557,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.profit": "467.9922", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", + "ECommerce.sales": "1199.98", "ECommerce.subCategory": "Copiers", }, Object { @@ -13572,14 +13572,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.profit": "129.294", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", + "ECommerce.sales": "2154.9", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13587,14 +13587,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.6", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.profit": "-19.864", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13602,14 +13602,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.profit": "6.1992", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", + "ECommerce.sales": "18.368", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13617,14 +13617,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.profit": "26.9973", + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", + "ECommerce.sales": "239.976", "ECommerce.subCategory": "Phones", }, Object { @@ -13632,14 +13632,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.profit": "225.6", + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", + "ECommerce.sales": "480", "ECommerce.subCategory": "Machines", }, Object { @@ -13647,14 +13647,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.profit": "-7.2", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", + "ECommerce.sales": "120", "ECommerce.subCategory": "Machines", }, Object { @@ -13662,14 +13662,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.1", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.profit": "24.2012", + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", + "ECommerce.sales": "128.124", "ECommerce.subCategory": "Chairs", }, Object { @@ -13677,14 +13677,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.profit": "-5.0098", + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", + "ECommerce.sales": "400.784", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13692,14 +13692,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.4", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.profit": "74.9985", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", + "ECommerce.sales": "899.982", "ECommerce.subCategory": "Copiers", }, Object { @@ -13707,14 +13707,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -13727,14 +13727,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "MC-17605", "ECommerce.customerName": "Customer 31", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-01-23T00:00:00.000", "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", - "ECommerce.profit": 21.098, - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, - "ECommerce.sales": 210.98, + "ECommerce.profit": "21.098", + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", + "ECommerce.sales": "210.98", "ECommerce.subCategory": "Tables", }, Object { @@ -13742,14 +13742,14 @@ Array [ "ECommerce.city": "Lorain", "ECommerce.customerId": "GA-14725", "ECommerce.customerName": "Customer 19", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 8.5568, - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, - "ECommerce.sales": 48.896, + "ECommerce.profit": "8.5568", + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", + "ECommerce.sales": "48.896", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13757,14 +13757,14 @@ Array [ "ECommerce.city": "Olympia", "ECommerce.customerId": "PF-19165", "ECommerce.customerName": "Customer 36", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-17T00:00:00.000", "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", - "ECommerce.profit": 4.0687, - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, - "ECommerce.sales": 14.03, + "ECommerce.profit": "4.0687", + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", + "ECommerce.sales": "14.03", "ECommerce.subCategory": "Storage", }, Object { @@ -13772,14 +13772,14 @@ Array [ "ECommerce.city": "Vancouver", "ECommerce.customerId": "JW-15220", "ECommerce.customerName": "Customer 26", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-30T00:00:00.000", "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 3.6632, - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, - "ECommerce.sales": 9.64, + "ECommerce.profit": "3.6632", + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", + "ECommerce.sales": "9.64", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13787,14 +13787,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "ML-17755", "ECommerce.customerName": "Customer 33", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": -2.1195, - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, - "ECommerce.sales": 11.304, + "ECommerce.profit": "-2.1195", + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", + "ECommerce.sales": "11.304", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13802,14 +13802,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-23T00:00:00.000", "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", - "ECommerce.profit": 5.2026, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, - "ECommerce.sales": 14.352, + "ECommerce.profit": "5.2026", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", + "ECommerce.sales": "14.352", "ECommerce.subCategory": "Envelopes", }, Object { @@ -13817,14 +13817,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "DB-13405", "ECommerce.customerName": "Customer 15", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-03-17T00:00:00.000", "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", - "ECommerce.profit": 13.604, - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, - "ECommerce.sales": 71.6, + "ECommerce.profit": "13.604", + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", + "ECommerce.sales": "71.6", "ECommerce.subCategory": "Accessories", }, Object { @@ -13832,14 +13832,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BM-11650", "ECommerce.customerName": "Customer 8", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-13T00:00:00.000", "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", - "ECommerce.profit": 81.432, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, - "ECommerce.sales": 180.96, + "ECommerce.profit": "81.432", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", + "ECommerce.sales": "180.96", "ECommerce.subCategory": "Envelopes", }, Object { @@ -13847,14 +13847,14 @@ Array [ "ECommerce.city": "Provo", "ECommerce.customerId": "AS-10225", "ECommerce.customerName": "Customer 3", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 77.5764, - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, - "ECommerce.sales": 1292.94, + "ECommerce.profit": "77.5764", + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", + "ECommerce.sales": "1292.94", "ECommerce.subCategory": "Bookcases", }, Object { @@ -13862,14 +13862,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "DG-13300", "ECommerce.customerName": "Customer 16", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-28T00:00:00.000", "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", - "ECommerce.profit": 494.9725, - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, - "ECommerce.sales": 1979.89, + "ECommerce.profit": "494.9725", + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", + "ECommerce.sales": "1979.89", "ECommerce.subCategory": "Phones", }, Object { @@ -13877,14 +13877,14 @@ Array [ "ECommerce.city": "Glendale", "ECommerce.customerId": "EM-14140", "ECommerce.customerName": "Customer 18", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-12T00:00:00.000", "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 9.9652, - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, - "ECommerce.sales": 113.888, + "ECommerce.profit": "9.9652", + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", + "ECommerce.sales": "113.888", "ECommerce.subCategory": "Chairs", }, Object { @@ -13892,14 +13892,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 10.3904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, - "ECommerce.sales": 30.56, + "ECommerce.profit": "10.3904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -13907,14 +13907,14 @@ Array [ "ECommerce.city": "San Francisco", "ECommerce.customerId": "HH-15010", "ECommerce.customerName": "Customer 21", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-10-19T00:00:00.000", "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", - "ECommerce.profit": -3.3506, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, - "ECommerce.sales": 24.368, + "ECommerce.profit": "-3.3506", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", + "ECommerce.sales": "24.368", "ECommerce.subCategory": "Tables", }, Object { @@ -13922,14 +13922,14 @@ Array [ "ECommerce.city": "Louisville", "ECommerce.customerId": "DW-13480", "ECommerce.customerName": "Customer 17", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-27T00:00:00.000", "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -13937,14 +13937,14 @@ Array [ "ECommerce.city": "Auburn", "ECommerce.customerId": "KN-16705", "ECommerce.customerName": "Customer 28", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-11T00:00:00.000", "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -13952,14 +13952,14 @@ Array [ "ECommerce.city": "Omaha", "ECommerce.customerId": "JO-15550", "ECommerce.customerName": "Customer 24", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-29T00:00:00.000", "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 1.1775, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, - "ECommerce.sales": 23.55, + "ECommerce.profit": "1.1775", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", + "ECommerce.sales": "23.55", "ECommerce.subCategory": "Fasteners", }, Object { @@ -13967,14 +13967,14 @@ Array [ "ECommerce.city": "Bakersfield", "ECommerce.customerId": "AW-10840", "ECommerce.customerName": "Customer 4", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-02T00:00:00.000", "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 2.726, - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, - "ECommerce.sales": 9.4, + "ECommerce.profit": "2.726", + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", + "ECommerce.sales": "9.4", "ECommerce.subCategory": "Art", }, Object { @@ -13982,14 +13982,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "CC-12475", "ECommerce.customerName": "Customer 12", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-21T00:00:00.000", "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", - "ECommerce.profit": 3.9296, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, - "ECommerce.sales": 39.296, + "ECommerce.profit": "3.9296", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", + "ECommerce.sales": "39.296", "ECommerce.subCategory": "Storage", }, Object { @@ -13997,14 +13997,14 @@ Array [ "ECommerce.city": "Lafayette", "ECommerce.customerId": "CS-12355", "ECommerce.customerName": "Customer 14", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-24T00:00:00.000", "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", - "ECommerce.profit": 60.5488, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, - "ECommerce.sales": 232.88, + "ECommerce.profit": "60.5488", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", + "ECommerce.sales": "232.88", "ECommerce.subCategory": "Chairs", }, Object { @@ -14012,14 +14012,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "AH-10465", "ECommerce.customerName": "Customer 1", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", - "ECommerce.profit": 134.9925, - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, - "ECommerce.sales": 539.97, + "ECommerce.profit": "134.9925", + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", + "ECommerce.sales": "539.97", "ECommerce.subCategory": "Phones", }, Object { @@ -14027,14 +14027,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "WB-21850", "ECommerce.customerName": "Customer 41", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-11T00:00:00.000", "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 21.5824, - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, - "ECommerce.sales": 45.92, + "ECommerce.profit": "21.5824", + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14042,14 +14042,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TB-21175", "ECommerce.customerName": "Customer 39", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-11-02T00:00:00.000", "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", - "ECommerce.profit": 517.4793, - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, - "ECommerce.sales": 2249.91, + "ECommerce.profit": "517.4793", + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", + "ECommerce.sales": "2249.91", "ECommerce.subCategory": "Accessories", }, Object { @@ -14057,14 +14057,14 @@ Array [ "ECommerce.city": "Detroit", "ECommerce.customerId": "CA-12775", "ECommerce.customerName": "Customer 11", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 134.5302, - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, - "ECommerce.sales": 498.26, + "ECommerce.profit": "134.5302", + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", + "ECommerce.sales": "498.26", "ECommerce.subCategory": "Chairs", }, Object { @@ -14072,14 +14072,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "KL-16555", "ECommerce.customerName": "Customer 27", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -14087,14 +14087,14 @@ Array [ "ECommerce.city": "Los Angeles", "ECommerce.customerId": "SS-20140", "ECommerce.customerName": "Customer 38", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-03T00:00:00.000", "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", - "ECommerce.profit": 8.5025, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, - "ECommerce.sales": 44.75, + "ECommerce.profit": "8.5025", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", + "ECommerce.sales": "44.75", "ECommerce.subCategory": "Accessories", }, Object { @@ -14102,14 +14102,14 @@ Array [ "ECommerce.city": "Marion", "ECommerce.customerId": "MG-17650", "ECommerce.customerName": "Customer 32", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", - "ECommerce.profit": 1.7352, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, - "ECommerce.sales": 7.712, + "ECommerce.profit": "1.7352", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", + "ECommerce.sales": "7.712", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14117,14 +14117,14 @@ Array [ "ECommerce.city": "Oakland", "ECommerce.customerId": "BB-11545", "ECommerce.customerName": "Customer 5", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-02T00:00:00.000", "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 44.975, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, - "ECommerce.sales": 179.9, + "ECommerce.profit": "44.975", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", + "ECommerce.sales": "179.9", "ECommerce.subCategory": "Art", }, Object { @@ -14132,14 +14132,14 @@ Array [ "ECommerce.city": "Baltimore", "ECommerce.customerId": "AJ-10780", "ECommerce.customerName": "Customer 2", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-05-14T00:00:00.000", "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", - "ECommerce.profit": 1.0904, - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, - "ECommerce.sales": 3.76, + "ECommerce.profit": "1.0904", + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", + "ECommerce.sales": "3.76", "ECommerce.subCategory": "Art", }, Object { @@ -14147,14 +14147,14 @@ Array [ "ECommerce.city": "Arlington", "ECommerce.customerId": "BF-11020", "ECommerce.customerName": "Customer 6", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-09-08T00:00:00.000", "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 15.498, - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, - "ECommerce.sales": 45.92, + "ECommerce.profit": "15.498", + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", + "ECommerce.sales": "45.92", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14162,14 +14162,14 @@ Array [ "ECommerce.city": "Houston", "ECommerce.customerId": "HK-14890", "ECommerce.customerName": "Customer 22", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-03-26T00:00:00.000", "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 569.9905, - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, - "ECommerce.sales": 2399.96, + "ECommerce.profit": "569.9905", + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", + "ECommerce.sales": "2399.96", "ECommerce.subCategory": "Copiers", }, Object { @@ -14177,14 +14177,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "LR-16915", "ECommerce.customerName": "Customer 30", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-04T00:00:00.000", "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", - "ECommerce.profit": -272.58, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, - "ECommerce.sales": 649, + "ECommerce.profit": "-272.58", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", + "ECommerce.sales": "649", "ECommerce.subCategory": "Machines", }, Object { @@ -14192,14 +14192,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "MM-18280", "ECommerce.customerName": "Customer 34", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-06-10T00:00:00.000", "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", - "ECommerce.profit": 0.7065, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, - "ECommerce.sales": 14.13, + "ECommerce.profit": "0.7065", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", + "ECommerce.sales": "14.13", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14207,14 +14207,14 @@ Array [ "ECommerce.city": "Philadelphia", "ECommerce.customerId": "BS-11755", "ECommerce.customerName": "Customer 10", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-04-10T00:00:00.000", "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": 6.4176, - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, - "ECommerce.sales": 36.672, + "ECommerce.profit": "6.4176", + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", + "ECommerce.sales": "36.672", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14222,14 +14222,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BF-11170", "ECommerce.customerName": "Customer 7", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-12-14T00:00:00.000", "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", - "ECommerce.profit": 467.9922, - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, - "ECommerce.sales": 1199.98, + "ECommerce.profit": "467.9922", + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", + "ECommerce.sales": "1199.98", "ECommerce.subCategory": "Copiers", }, Object { @@ -14237,14 +14237,14 @@ Array [ "ECommerce.city": "Lakewood", "ECommerce.customerId": "NP-18670", "ECommerce.customerName": "Customer 35", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-10-12T00:00:00.000", "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", - "ECommerce.profit": 129.294, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, - "ECommerce.sales": 2154.9, + "ECommerce.profit": "129.294", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", + "ECommerce.sales": "2154.9", "ECommerce.subCategory": "Bookcases", }, Object { @@ -14252,14 +14252,14 @@ Array [ "ECommerce.city": "Dallas", "ECommerce.customerId": "LC-17050", "ECommerce.customerName": "Customer 29", - "ECommerce.discount": 0.6, + "ECommerce.discount": "0.6", "ECommerce.orderDate": "2020-11-06T00:00:00.000", "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", - "ECommerce.profit": -19.864, - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, - "ECommerce.sales": 30.56, + "ECommerce.profit": "-19.864", + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", + "ECommerce.sales": "30.56", "ECommerce.subCategory": "Furnishings", }, Object { @@ -14267,14 +14267,14 @@ Array [ "ECommerce.city": "Decatur", "ECommerce.customerId": "JS-16030", "ECommerce.customerName": "Customer 25", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-02-16T00:00:00.000", "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", - "ECommerce.profit": 6.1992, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, - "ECommerce.sales": 18.368, + "ECommerce.profit": "6.1992", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", + "ECommerce.sales": "18.368", "ECommerce.subCategory": "Fasteners", }, Object { @@ -14282,14 +14282,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "TS-21205", "ECommerce.customerName": "Customer 40", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-15T00:00:00.000", "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", - "ECommerce.profit": 26.9973, - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, - "ECommerce.sales": 239.976, + "ECommerce.profit": "26.9973", + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", + "ECommerce.sales": "239.976", "ECommerce.subCategory": "Phones", }, Object { @@ -14297,14 +14297,14 @@ Array [ "ECommerce.city": "Morristown", "ECommerce.customerId": "GZ-14470", "ECommerce.customerName": "Customer 20", - "ECommerce.discount": 0, + "ECommerce.discount": "0", "ECommerce.orderDate": "2020-09-17T00:00:00.000", "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": 225.6, - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, - "ECommerce.sales": 480, + "ECommerce.profit": "225.6", + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", + "ECommerce.sales": "480", "ECommerce.subCategory": "Machines", }, Object { @@ -14312,14 +14312,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "JH-15430", "ECommerce.customerName": "Customer 23", - "ECommerce.discount": 0.5, + "ECommerce.discount": "0.5", "ECommerce.orderDate": "2020-12-25T00:00:00.000", "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", - "ECommerce.profit": -7.2, - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, - "ECommerce.sales": 120, + "ECommerce.profit": "-7.2", + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", + "ECommerce.sales": "120", "ECommerce.subCategory": "Machines", }, Object { @@ -14327,14 +14327,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "CD-12280", "ECommerce.customerName": "Customer 13", - "ECommerce.discount": 0.1, + "ECommerce.discount": "0.1", "ECommerce.orderDate": "2020-11-05T00:00:00.000", "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", - "ECommerce.profit": 24.2012, - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, - "ECommerce.sales": 128.124, + "ECommerce.profit": "24.2012", + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", + "ECommerce.sales": "128.124", "ECommerce.subCategory": "Chairs", }, Object { @@ -14342,14 +14342,14 @@ Array [ "ECommerce.city": "New York City", "ECommerce.customerId": "SB-20185", "ECommerce.customerName": "Customer 37", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-06-25T00:00:00.000", "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", - "ECommerce.profit": -5.0098, - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, - "ECommerce.sales": 400.784, + "ECommerce.profit": "-5.0098", + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", + "ECommerce.sales": "400.784", "ECommerce.subCategory": "Bookcases", }, Object { @@ -14357,14 +14357,14 @@ Array [ "ECommerce.city": "Columbus", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.4, + "ECommerce.discount": "0.4", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", - "ECommerce.profit": 74.9985, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, - "ECommerce.sales": 899.982, + "ECommerce.profit": "74.9985", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", + "ECommerce.sales": "899.982", "ECommerce.subCategory": "Copiers", }, Object { @@ -14372,14 +14372,14 @@ Array [ "ECommerce.city": "Bowling", "ECommerce.customerId": "BS-11380", "ECommerce.customerName": "Customer 9", - "ECommerce.discount": 0.2, + "ECommerce.discount": "0.2", "ECommerce.orderDate": "2020-11-16T00:00:00.000", "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", - "ECommerce.profit": 5.397, - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, - "ECommerce.sales": 86.352, + "ECommerce.profit": "5.397", + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", + "ECommerce.sales": "86.352", "ECommerce.subCategory": "Art", }, ] @@ -15286,31 +15286,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 210.98, + "SwitchSourceTest.totalSales": "210.98", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 48.896, + "SwitchSourceTest.totalSales": "48.896", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 18.368, + "SwitchSourceTest.totalSales": "18.368", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 2399.96, + "SwitchSourceTest.totalSales": "2399.96", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 71.6, + "SwitchSourceTest.totalSales": "71.6", }, ] `; @@ -15321,31 +15321,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 1265.88, + "SwitchSourceTest.totalSales": "1265.88", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSales": 293.376, + "SwitchSourceTest.totalSales": "293.376", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSales": 110.208, + "SwitchSourceTest.totalSales": "110.208", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 14399.76, + "SwitchSourceTest.totalSales": "14399.76", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSales": 429.6, + "SwitchSourceTest.totalSales": "429.6", }, ] `; @@ -15356,31 +15356,31 @@ Array [ "SwitchSourceTest.city": "Detroit", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 421.96, + "SwitchSourceTest.totalSalesA": "421.96", }, Object { "SwitchSourceTest.city": "Lorain", "SwitchSourceTest.orderDate": "2020-01-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-01-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 97.792, + "SwitchSourceTest.totalSalesA": "97.792", }, Object { "SwitchSourceTest.city": "Decatur", "SwitchSourceTest.orderDate": "2020-02-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-02-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 36.736, + "SwitchSourceTest.totalSalesA": "36.736", }, Object { "SwitchSourceTest.city": "Houston", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 4799.92, + "SwitchSourceTest.totalSalesA": "4799.92", }, Object { "SwitchSourceTest.city": "New York City", "SwitchSourceTest.orderDate": "2020-03-01T00:00:00.000", "SwitchSourceTest.orderDate.month": "2020-03-01T00:00:00.000", - "SwitchSourceTest.totalSalesA": 143.2, + "SwitchSourceTest.totalSalesA": "143.2", }, ] `; @@ -15612,181 +15612,181 @@ exports[`Queries with the @cubejs-backend/oracle-driver querying custom granular Array [ Object { "ECommerce.city": "Auburn", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Baltimore", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 3, + "ECommerce.count": "3", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Decatur", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Houston", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Lorain", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Los Angeles", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Louisville", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 4, + "ECommerce.count": "4", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Olympia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Omaha", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { "ECommerce.city": "Arlington", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Bakersfield", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Bowling", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 9, + "ECommerce.count": "9", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Dallas", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Glendale", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Lafayette", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Lakewood", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Marion", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Morristown", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Oakland", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Provo", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "San Francisco", - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, Object { "ECommerce.city": "Vancouver", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, @@ -15796,12 +15796,12 @@ Array [ exports[`Queries with the @cubejs-backend/oracle-driver querying custom granularities ECommerce: count by half_year + no dimension 1`] = ` Array [ Object { - "ECommerce.count": 18, + "ECommerce.count": "18", "ECommerce.customOrderDateNoPreAgg": "2020-01-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-01-01T00:00:00.000", }, Object { - "ECommerce.count": 26, + "ECommerce.count": "26", "ECommerce.customOrderDateNoPreAgg": "2020-07-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year": "2020-07-01T00:00:00.000", }, @@ -15812,187 +15812,187 @@ exports[`Queries with the @cubejs-backend/oracle-driver querying custom granular Array [ Object { "ECommerce.city": "Decatur", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { "ECommerce.city": "Houston", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { "ECommerce.city": "Lorain", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { "ECommerce.city": "Arlington", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Auburn", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Bakersfield", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Baltimore", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 4, + "ECommerce.count": "4", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Detroit", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Los Angeles", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Louisville", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Morristown", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 3, + "ECommerce.count": "3", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Olympia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Omaha", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Provo", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { "ECommerce.city": "Bowling", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Columbus", - "ECommerce.count": 8, + "ECommerce.count": "8", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Dallas", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Glendale", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Lafayette", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Lakewood", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Marion", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "New York City", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Oakland", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Philadelphia", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "San Francisco", - "ECommerce.count": 2, + "ECommerce.count": "2", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, Object { "ECommerce.city": "Vancouver", - "ECommerce.count": 1, + "ECommerce.count": "1", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, @@ -16002,17 +16002,17 @@ Array [ exports[`Queries with the @cubejs-backend/oracle-driver querying custom granularities ECommerce: count by half_year_by_1st_april + no dimension 1`] = ` Array [ Object { - "ECommerce.count": 5, + "ECommerce.count": "5", "ECommerce.customOrderDateNoPreAgg": "2019-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2019-10-01T00:00:00.000", }, Object { - "ECommerce.count": 19, + "ECommerce.count": "19", "ECommerce.customOrderDateNoPreAgg": "2020-04-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-04-01T00:00:00.000", }, Object { - "ECommerce.count": 20, + "ECommerce.count": "20", "ECommerce.customOrderDateNoPreAgg": "2020-10-01T00:00:00.000", "ECommerce.customOrderDateNoPreAgg.half_year_by_1st_april": "2020-10-01T00:00:00.000", }, @@ -16024,27 +16024,27 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 8, + "ECommerce.rollingCountByLeading": "8", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 12, + "ECommerce.rollingCountByLeading": "12", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 6, + "ECommerce.rollingCountByLeading": "6", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 19, + "ECommerce.rollingCountByLeading": "19", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", - "ECommerce.rollingCountByLeading": 16, + "ECommerce.rollingCountByLeading": "16", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", @@ -16064,17 +16064,17 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 3, + "ECommerce.rollingCountByTrailing": "3", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 3, + "ECommerce.rollingCountByTrailing": "3", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 12, + "ECommerce.rollingCountByTrailing": "12", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", @@ -16084,12 +16084,12 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 10, + "ECommerce.rollingCountByTrailing": "10", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", - "ECommerce.rollingCountByTrailing": 16, + "ECommerce.rollingCountByTrailing": "16", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", @@ -16104,37 +16104,37 @@ Array [ Object { "ECommerce.customOrderDateNoPreAgg": "2019-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2019-12-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 3, + "ECommerce.rollingCountByUnbounded": "3", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-02-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-02-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 6, + "ECommerce.rollingCountByUnbounded": "6", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-04-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-04-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 18, + "ECommerce.rollingCountByUnbounded": "18", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-06-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-06-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 18, + "ECommerce.rollingCountByUnbounded": "18", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-08-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-08-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 28, + "ECommerce.rollingCountByUnbounded": "28", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-10-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-10-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 44, + "ECommerce.rollingCountByUnbounded": "44", }, Object { "ECommerce.customOrderDateNoPreAgg": "2020-12-01T10:00:00.000", "ECommerce.customOrderDateNoPreAgg.two_mo_by_feb": "2020-12-01T10:00:00.000", - "ECommerce.rollingCountByUnbounded": 44, + "ECommerce.rollingCountByUnbounded": "44", }, ] `; diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-full.test.ts.snap index dbf20dcf4c1ea..8222e8db9b17d 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-full.test.ts.snap @@ -14484,8 +14484,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14499,8 +14499,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14519,8 +14519,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14534,8 +14534,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -14549,8 +14549,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14564,8 +14564,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14579,8 +14579,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14594,8 +14594,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14609,8 +14609,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -14624,8 +14624,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14646,8 +14646,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14661,8 +14661,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -14681,8 +14681,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14696,8 +14696,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14711,8 +14711,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -14726,8 +14726,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -14741,8 +14741,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14756,8 +14756,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14771,8 +14771,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14786,8 +14786,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -14801,8 +14801,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -14816,8 +14816,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14831,8 +14831,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -14846,8 +14846,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -14868,8 +14868,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14883,8 +14883,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14898,8 +14898,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14913,8 +14913,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14933,8 +14933,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -14948,8 +14948,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14963,8 +14963,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14978,8 +14978,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14993,8 +14993,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -15008,8 +15008,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -15023,8 +15023,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -15038,8 +15038,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -15053,8 +15053,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -15068,8 +15068,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -15083,8 +15083,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -16495,7 +16495,7 @@ Array [ Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Day": 1, + "BigECommerce.rollingCountApproxBy2Day": "1", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", @@ -16515,37 +16515,37 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 2, + "BigECommerce.rollingCountApproxBy2Month": "2", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 3, + "BigECommerce.rollingCountApproxBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 3, + "BigECommerce.rollingCountApproxBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-04-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-04-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 3, + "BigECommerce.rollingCountApproxBy2Month": "3", }, Object { "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 6, + "BigECommerce.rollingCountApproxBy2Month": "6", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 12, + "BigECommerce.rollingCountApproxBy2Month": "12", }, Object { "BigECommerce.orderDate": "2020-07-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-07-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 7, + "BigECommerce.rollingCountApproxBy2Month": "7", }, Object { "BigECommerce.orderDate": "2020-08-01T00:00:00.000", @@ -16555,22 +16555,22 @@ Array [ Object { "BigECommerce.orderDate": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 6, + "BigECommerce.rollingCountApproxBy2Month": "6", }, Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 9, + "BigECommerce.rollingCountApproxBy2Month": "9", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 11, + "BigECommerce.rollingCountApproxBy2Month": "11", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Month": 15, + "BigECommerce.rollingCountApproxBy2Month": "15", }, ] `; @@ -16580,17 +16580,17 @@ Array [ Object { "BigECommerce.orderDate": "2020-01-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-01-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 1, + "BigECommerce.rollingCountApproxBy2Week": "1", }, Object { "BigECommerce.orderDate": "2020-02-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-02-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 1, + "BigECommerce.rollingCountApproxBy2Week": "1", }, Object { "BigECommerce.orderDate": "2020-03-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-03-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 1, + "BigECommerce.rollingCountApproxBy2Week": "1", }, Object { "BigECommerce.orderDate": "2020-04-01T00:00:00.000", @@ -16600,12 +16600,12 @@ Array [ Object { "BigECommerce.orderDate": "2020-05-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-05-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 2, + "BigECommerce.rollingCountApproxBy2Week": "2", }, Object { "BigECommerce.orderDate": "2020-06-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-06-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 3, + "BigECommerce.rollingCountApproxBy2Week": "3", }, Object { "BigECommerce.orderDate": "2020-07-01T00:00:00.000", @@ -16620,22 +16620,22 @@ Array [ Object { "BigECommerce.orderDate": "2020-09-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-09-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 3, + "BigECommerce.rollingCountApproxBy2Week": "3", }, Object { "BigECommerce.orderDate": "2020-10-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-10-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 2, + "BigECommerce.rollingCountApproxBy2Week": "2", }, Object { "BigECommerce.orderDate": "2020-11-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-11-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 2, + "BigECommerce.rollingCountApproxBy2Week": "2", }, Object { "BigECommerce.orderDate": "2020-12-01T00:00:00.000", "BigECommerce.orderDate.month": "2020-12-01T00:00:00.000", - "BigECommerce.rollingCountApproxBy2Week": 2, + "BigECommerce.rollingCountApproxBy2Week": "2", }, ] `; @@ -19080,8 +19080,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -19095,8 +19095,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -19110,8 +19110,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -19125,8 +19125,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -19140,8 +19140,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -19155,8 +19155,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -19170,8 +19170,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -19185,8 +19185,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -19200,8 +19200,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -19215,8 +19215,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -19235,8 +19235,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -19250,8 +19250,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19265,8 +19265,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -19280,8 +19280,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19295,8 +19295,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19310,8 +19310,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -19325,8 +19325,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -19340,8 +19340,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -19355,8 +19355,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -19370,8 +19370,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19390,8 +19390,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -19405,8 +19405,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -19420,8 +19420,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -19435,8 +19435,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -19450,8 +19450,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -19465,8 +19465,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -19480,8 +19480,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -19495,8 +19495,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -19510,8 +19510,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -19525,8 +19525,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -19545,8 +19545,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -19565,8 +19565,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -19580,8 +19580,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -19595,8 +19595,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -19610,8 +19610,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -19625,8 +19625,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -19640,8 +19640,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -19655,8 +19655,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -19670,8 +19670,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -19685,8 +19685,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -19700,8 +19700,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -19715,8 +19715,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -19730,8 +19730,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19745,8 +19745,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -19760,8 +19760,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19775,8 +19775,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19790,8 +19790,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -19805,8 +19805,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -19820,8 +19820,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -19835,8 +19835,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -19850,8 +19850,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19865,8 +19865,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19880,8 +19880,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -19895,8 +19895,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -19910,8 +19910,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19925,8 +19925,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19940,8 +19940,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -19955,8 +19955,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -19970,8 +19970,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19985,8 +19985,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -20000,8 +20000,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -20015,8 +20015,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -20030,8 +20030,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -20045,8 +20045,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -20060,8 +20060,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -20075,8 +20075,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -20090,8 +20090,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -20105,8 +20105,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -20120,8 +20120,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -20135,8 +20135,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -20150,8 +20150,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -20165,8 +20165,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -20180,8 +20180,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -20195,8 +20195,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -20210,8 +20210,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -20230,8 +20230,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -20245,8 +20245,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -20260,8 +20260,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -20275,8 +20275,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -20290,8 +20290,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -20305,8 +20305,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -20320,8 +20320,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -20335,8 +20335,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -20350,8 +20350,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -20365,8 +20365,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -20380,8 +20380,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -20395,8 +20395,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -20410,8 +20410,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -20425,8 +20425,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -20440,8 +20440,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -20455,8 +20455,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -20470,8 +20470,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -20485,8 +20485,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -20500,8 +20500,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -20515,8 +20515,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -20530,8 +20530,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -20545,8 +20545,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -20560,8 +20560,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -20575,8 +20575,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -20590,8 +20590,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -20605,8 +20605,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -20620,8 +20620,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -20635,8 +20635,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -20650,8 +20650,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -20665,8 +20665,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -20680,8 +20680,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -20695,8 +20695,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -20710,8 +20710,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -20725,8 +20725,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -20740,8 +20740,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -20755,8 +20755,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -20770,8 +20770,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -20785,8 +20785,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -20800,8 +20800,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -20815,8 +20815,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -20830,8 +20830,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -20845,8 +20845,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -20860,8 +20860,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -20875,8 +20875,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -20895,8 +20895,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -20910,8 +20910,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -20925,8 +20925,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -20940,8 +20940,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -20955,8 +20955,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -20970,8 +20970,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -20985,8 +20985,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -21000,8 +21000,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -21015,8 +21015,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -21030,8 +21030,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -21045,8 +21045,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -21060,8 +21060,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -21075,8 +21075,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -21090,8 +21090,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -21105,8 +21105,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -21120,8 +21120,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -21135,8 +21135,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -21150,8 +21150,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -21165,8 +21165,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -21180,8 +21180,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -21195,8 +21195,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -21210,8 +21210,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -21225,8 +21225,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -21240,8 +21240,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -21255,8 +21255,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -21270,8 +21270,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -21285,8 +21285,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -21300,8 +21300,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -21315,8 +21315,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -21330,8 +21330,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -21345,8 +21345,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -21360,8 +21360,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -21375,8 +21375,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -21390,8 +21390,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -21405,8 +21405,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -21420,8 +21420,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -21435,8 +21435,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -21450,8 +21450,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -21465,8 +21465,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -21480,8 +21480,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -21495,8 +21495,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -21510,8 +21510,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -21525,8 +21525,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -21540,8 +21540,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap index 7c49cbcc63e83..ca8de71d5688d 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap @@ -14156,8 +14156,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14171,8 +14171,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14191,8 +14191,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14206,8 +14206,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -14221,8 +14221,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14236,8 +14236,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14251,8 +14251,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14266,8 +14266,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14281,8 +14281,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -14296,8 +14296,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14318,8 +14318,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14333,8 +14333,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -14353,8 +14353,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14368,8 +14368,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14383,8 +14383,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -14398,8 +14398,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -14413,8 +14413,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14428,8 +14428,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14443,8 +14443,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14458,8 +14458,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -14473,8 +14473,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -14488,8 +14488,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14503,8 +14503,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -14518,8 +14518,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -14540,8 +14540,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14555,8 +14555,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14570,8 +14570,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14585,8 +14585,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14605,8 +14605,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -14620,8 +14620,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14635,8 +14635,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14650,8 +14650,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14665,8 +14665,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -14680,8 +14680,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14695,8 +14695,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -14710,8 +14710,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -14725,8 +14725,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -14740,8 +14740,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -14755,8 +14755,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -17736,8 +17736,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -17751,8 +17751,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -17766,8 +17766,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -17781,8 +17781,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -17796,8 +17796,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -17811,8 +17811,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -17826,8 +17826,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -17841,8 +17841,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -17856,8 +17856,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -17871,8 +17871,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -17891,8 +17891,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -17906,8 +17906,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -17921,8 +17921,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -17936,8 +17936,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -17951,8 +17951,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -17966,8 +17966,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -17981,8 +17981,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -17996,8 +17996,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -18011,8 +18011,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -18026,8 +18026,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18046,8 +18046,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -18061,8 +18061,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -18076,8 +18076,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -18091,8 +18091,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -18106,8 +18106,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -18121,8 +18121,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -18136,8 +18136,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18151,8 +18151,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -18166,8 +18166,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -18181,8 +18181,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -18201,8 +18201,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -18221,8 +18221,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -18236,8 +18236,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -18251,8 +18251,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -18266,8 +18266,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -18281,8 +18281,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -18296,8 +18296,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -18311,8 +18311,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18326,8 +18326,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -18341,8 +18341,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -18356,8 +18356,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -18371,8 +18371,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -18386,8 +18386,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -18401,8 +18401,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -18416,8 +18416,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18431,8 +18431,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -18446,8 +18446,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -18461,8 +18461,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -18476,8 +18476,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -18491,8 +18491,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -18506,8 +18506,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18521,8 +18521,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -18536,8 +18536,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -18551,8 +18551,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -18566,8 +18566,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -18581,8 +18581,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -18596,8 +18596,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -18611,8 +18611,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -18626,8 +18626,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -18641,8 +18641,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -18656,8 +18656,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -18671,8 +18671,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -18686,8 +18686,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -18701,8 +18701,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -18716,8 +18716,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -18731,8 +18731,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -18746,8 +18746,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -18761,8 +18761,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -18776,8 +18776,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -18791,8 +18791,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -18806,8 +18806,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -18821,8 +18821,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -18836,8 +18836,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -18851,8 +18851,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -18866,8 +18866,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -18886,8 +18886,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -18901,8 +18901,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -18916,8 +18916,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -18931,8 +18931,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -18946,8 +18946,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -18961,8 +18961,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -18976,8 +18976,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18991,8 +18991,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -19006,8 +19006,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -19021,8 +19021,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -19036,8 +19036,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -19051,8 +19051,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19066,8 +19066,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -19081,8 +19081,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19096,8 +19096,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19111,8 +19111,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -19126,8 +19126,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -19141,8 +19141,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -19156,8 +19156,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -19171,8 +19171,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19186,8 +19186,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19201,8 +19201,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -19216,8 +19216,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -19231,8 +19231,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19246,8 +19246,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19261,8 +19261,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -19276,8 +19276,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -19291,8 +19291,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19306,8 +19306,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19321,8 +19321,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -19336,8 +19336,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -19351,8 +19351,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -19366,8 +19366,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -19381,8 +19381,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -19396,8 +19396,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -19411,8 +19411,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19426,8 +19426,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -19441,8 +19441,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -19456,8 +19456,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -19471,8 +19471,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -19486,8 +19486,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -19501,8 +19501,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -19516,8 +19516,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -19531,8 +19531,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -19551,8 +19551,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -19566,8 +19566,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -19581,8 +19581,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -19596,8 +19596,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -19611,8 +19611,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -19626,8 +19626,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -19641,8 +19641,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -19656,8 +19656,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -19671,8 +19671,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -19686,8 +19686,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -19701,8 +19701,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -19716,8 +19716,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19731,8 +19731,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -19746,8 +19746,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19761,8 +19761,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19776,8 +19776,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -19791,8 +19791,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -19806,8 +19806,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -19821,8 +19821,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -19836,8 +19836,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19851,8 +19851,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19866,8 +19866,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -19881,8 +19881,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -19896,8 +19896,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19911,8 +19911,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19926,8 +19926,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -19941,8 +19941,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -19956,8 +19956,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19971,8 +19971,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19986,8 +19986,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -20001,8 +20001,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -20016,8 +20016,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -20031,8 +20031,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -20046,8 +20046,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -20061,8 +20061,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -20076,8 +20076,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -20091,8 +20091,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -20106,8 +20106,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -20121,8 +20121,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -20136,8 +20136,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -20151,8 +20151,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -20166,8 +20166,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -20181,8 +20181,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -20196,8 +20196,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap index 0acc8160e630c..f996f43308760 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap @@ -14148,8 +14148,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14163,8 +14163,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14183,8 +14183,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14198,8 +14198,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -14213,8 +14213,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14228,8 +14228,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14243,8 +14243,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14258,8 +14258,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14273,8 +14273,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -14288,8 +14288,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14310,8 +14310,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14325,8 +14325,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -14345,8 +14345,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14360,8 +14360,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14375,8 +14375,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -14390,8 +14390,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -14405,8 +14405,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14420,8 +14420,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14435,8 +14435,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14450,8 +14450,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -14465,8 +14465,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -14480,8 +14480,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14495,8 +14495,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -14510,8 +14510,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -14532,8 +14532,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14547,8 +14547,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14562,8 +14562,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14577,8 +14577,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14597,8 +14597,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -14612,8 +14612,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14627,8 +14627,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14642,8 +14642,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14657,8 +14657,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -14672,8 +14672,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14687,8 +14687,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -14702,8 +14702,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -14717,8 +14717,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -14732,8 +14732,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -14747,8 +14747,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -17901,8 +17901,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -17916,8 +17916,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -17931,8 +17931,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -17946,8 +17946,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -17961,8 +17961,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -17976,8 +17976,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -17991,8 +17991,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18006,8 +18006,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -18021,8 +18021,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -18036,8 +18036,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -18056,8 +18056,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -18071,8 +18071,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -18086,8 +18086,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -18101,8 +18101,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18116,8 +18116,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -18131,8 +18131,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -18146,8 +18146,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -18161,8 +18161,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -18176,8 +18176,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -18191,8 +18191,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18211,8 +18211,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -18226,8 +18226,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -18241,8 +18241,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -18256,8 +18256,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -18271,8 +18271,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -18286,8 +18286,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -18301,8 +18301,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18316,8 +18316,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -18331,8 +18331,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -18346,8 +18346,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -18366,8 +18366,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -18386,8 +18386,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -18401,8 +18401,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -18416,8 +18416,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -18431,8 +18431,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -18446,8 +18446,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -18461,8 +18461,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -18476,8 +18476,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18491,8 +18491,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -18506,8 +18506,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -18521,8 +18521,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -18536,8 +18536,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -18551,8 +18551,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -18566,8 +18566,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -18581,8 +18581,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18596,8 +18596,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -18611,8 +18611,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -18626,8 +18626,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -18641,8 +18641,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -18656,8 +18656,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -18671,8 +18671,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18686,8 +18686,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -18701,8 +18701,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -18716,8 +18716,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -18731,8 +18731,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -18746,8 +18746,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -18761,8 +18761,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -18776,8 +18776,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -18791,8 +18791,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -18806,8 +18806,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -18821,8 +18821,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -18836,8 +18836,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -18851,8 +18851,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -18866,8 +18866,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -18881,8 +18881,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -18896,8 +18896,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -18911,8 +18911,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -18926,8 +18926,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -18941,8 +18941,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -18956,8 +18956,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -18971,8 +18971,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -18986,8 +18986,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -19001,8 +19001,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -19016,8 +19016,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -19031,8 +19031,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -19051,8 +19051,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -19066,8 +19066,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -19081,8 +19081,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -19096,8 +19096,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -19111,8 +19111,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -19126,8 +19126,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -19141,8 +19141,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -19156,8 +19156,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -19171,8 +19171,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -19186,8 +19186,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -19201,8 +19201,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -19216,8 +19216,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19231,8 +19231,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -19246,8 +19246,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19261,8 +19261,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19276,8 +19276,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -19291,8 +19291,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -19306,8 +19306,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -19321,8 +19321,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -19336,8 +19336,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19351,8 +19351,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19366,8 +19366,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -19381,8 +19381,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -19396,8 +19396,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19411,8 +19411,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19426,8 +19426,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -19441,8 +19441,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -19456,8 +19456,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19471,8 +19471,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19486,8 +19486,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -19501,8 +19501,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -19516,8 +19516,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -19531,8 +19531,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -19546,8 +19546,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -19561,8 +19561,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -19576,8 +19576,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19591,8 +19591,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -19606,8 +19606,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -19621,8 +19621,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -19636,8 +19636,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -19651,8 +19651,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -19666,8 +19666,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -19681,8 +19681,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -19696,8 +19696,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -19716,8 +19716,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -19731,8 +19731,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -19746,8 +19746,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -19761,8 +19761,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -19776,8 +19776,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -19791,8 +19791,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -19806,8 +19806,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -19821,8 +19821,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -19836,8 +19836,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -19851,8 +19851,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -19866,8 +19866,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -19881,8 +19881,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19896,8 +19896,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -19911,8 +19911,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19926,8 +19926,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19941,8 +19941,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -19956,8 +19956,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -19971,8 +19971,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -19986,8 +19986,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -20001,8 +20001,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -20016,8 +20016,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -20031,8 +20031,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -20046,8 +20046,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -20061,8 +20061,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -20076,8 +20076,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -20091,8 +20091,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -20106,8 +20106,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -20121,8 +20121,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -20136,8 +20136,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -20151,8 +20151,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -20166,8 +20166,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -20181,8 +20181,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -20196,8 +20196,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -20211,8 +20211,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -20226,8 +20226,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -20241,8 +20241,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -20256,8 +20256,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -20271,8 +20271,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -20286,8 +20286,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -20301,8 +20301,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -20316,8 +20316,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -20331,8 +20331,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -20346,8 +20346,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -20361,8 +20361,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-full.test.ts.snap index d2654f322525d..7723eb1be88df 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-full.test.ts.snap @@ -14476,8 +14476,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14491,8 +14491,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14511,8 +14511,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14526,8 +14526,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -14541,8 +14541,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14556,8 +14556,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14571,8 +14571,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14586,8 +14586,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14601,8 +14601,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -14616,8 +14616,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14638,8 +14638,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -14653,8 +14653,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -14673,8 +14673,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -14688,8 +14688,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -14703,8 +14703,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -14718,8 +14718,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -14733,8 +14733,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -14748,8 +14748,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -14763,8 +14763,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14778,8 +14778,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -14793,8 +14793,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -14808,8 +14808,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14823,8 +14823,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -14838,8 +14838,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -14860,8 +14860,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14875,8 +14875,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14890,8 +14890,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14905,8 +14905,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -14925,8 +14925,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -14940,8 +14940,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -14955,8 +14955,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -14970,8 +14970,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -14985,8 +14985,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -15000,8 +15000,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -15015,8 +15015,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -15030,8 +15030,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -15045,8 +15045,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -15060,8 +15060,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -15075,8 +15075,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -18315,8 +18315,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -18330,8 +18330,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -18345,8 +18345,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -18360,8 +18360,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -18375,8 +18375,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -18390,8 +18390,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -18405,8 +18405,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18420,8 +18420,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -18435,8 +18435,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -18450,8 +18450,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -18470,8 +18470,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -18485,8 +18485,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -18500,8 +18500,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -18515,8 +18515,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18530,8 +18530,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -18545,8 +18545,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -18560,8 +18560,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -18575,8 +18575,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -18590,8 +18590,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -18605,8 +18605,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -18625,8 +18625,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -18640,8 +18640,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -18655,8 +18655,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -18670,8 +18670,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -18685,8 +18685,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -18700,8 +18700,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -18715,8 +18715,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18730,8 +18730,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -18745,8 +18745,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -18760,8 +18760,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -18780,8 +18780,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -18800,8 +18800,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -18815,8 +18815,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -18830,8 +18830,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -18845,8 +18845,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -18860,8 +18860,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -18875,8 +18875,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -18890,8 +18890,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -18905,8 +18905,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -18920,8 +18920,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -18935,8 +18935,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -18950,8 +18950,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -18965,8 +18965,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -18980,8 +18980,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -18995,8 +18995,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19010,8 +19010,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19025,8 +19025,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -19040,8 +19040,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -19055,8 +19055,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -19070,8 +19070,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -19085,8 +19085,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19100,8 +19100,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19115,8 +19115,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -19130,8 +19130,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -19145,8 +19145,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19160,8 +19160,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19175,8 +19175,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -19190,8 +19190,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -19205,8 +19205,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19220,8 +19220,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19235,8 +19235,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -19250,8 +19250,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -19265,8 +19265,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -19280,8 +19280,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -19295,8 +19295,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -19310,8 +19310,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -19325,8 +19325,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19340,8 +19340,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -19355,8 +19355,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -19370,8 +19370,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -19385,8 +19385,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -19400,8 +19400,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -19415,8 +19415,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -19430,8 +19430,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -19445,8 +19445,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -19465,8 +19465,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -19480,8 +19480,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -19495,8 +19495,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -19510,8 +19510,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -19525,8 +19525,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -19540,8 +19540,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -19555,8 +19555,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -19570,8 +19570,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -19585,8 +19585,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -19600,8 +19600,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -19615,8 +19615,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -19630,8 +19630,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -19645,8 +19645,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -19660,8 +19660,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19675,8 +19675,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19690,8 +19690,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -19705,8 +19705,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -19720,8 +19720,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -19735,8 +19735,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -19750,8 +19750,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -19765,8 +19765,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19780,8 +19780,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -19795,8 +19795,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -19810,8 +19810,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19825,8 +19825,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -19840,8 +19840,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -19855,8 +19855,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -19870,8 +19870,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -19885,8 +19885,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -19900,8 +19900,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -19915,8 +19915,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -19930,8 +19930,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -19945,8 +19945,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -19960,8 +19960,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -19975,8 +19975,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -19990,8 +19990,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -20005,8 +20005,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -20020,8 +20020,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -20035,8 +20035,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -20050,8 +20050,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -20065,8 +20065,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -20080,8 +20080,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -20095,8 +20095,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -20110,8 +20110,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -20130,8 +20130,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -20145,8 +20145,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -20160,8 +20160,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -20175,8 +20175,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -20190,8 +20190,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -20205,8 +20205,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -20220,8 +20220,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -20235,8 +20235,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -20250,8 +20250,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -20265,8 +20265,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -20280,8 +20280,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -20295,8 +20295,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -20310,8 +20310,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -20325,8 +20325,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -20340,8 +20340,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -20355,8 +20355,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -20370,8 +20370,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -20385,8 +20385,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -20400,8 +20400,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -20415,8 +20415,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -20430,8 +20430,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -20445,8 +20445,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech di_Novo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -20460,8 +20460,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -20475,8 +20475,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -20490,8 +20490,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -20505,8 +20505,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -20520,8 +20520,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -20535,8 +20535,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -20550,8 +20550,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -20565,8 +20565,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -20580,8 +20580,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -20595,8 +20595,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -20610,8 +20610,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -20625,8 +20625,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -20640,8 +20640,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -20655,8 +20655,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -20670,8 +20670,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -20685,8 +20685,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -20700,8 +20700,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -20715,8 +20715,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -20730,8 +20730,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -20745,8 +20745,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -20760,8 +20760,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -20775,8 +20775,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, diff --git a/packages/cubejs-testing/test/__snapshots__/birdbox-postgresql.test.ts.snap b/packages/cubejs-testing/test/__snapshots__/birdbox-postgresql.test.ts.snap index 8ce5e3d76c39c..e5fcf85cfd5de 100644 --- a/packages/cubejs-testing/test/__snapshots__/birdbox-postgresql.test.ts.snap +++ b/packages/cubejs-testing/test/__snapshots__/birdbox-postgresql.test.ts.snap @@ -92,7 +92,7 @@ Array [ "unusualDataTypes.bit_column": "11111111", "unusualDataTypes.boolean_column": true, "unusualDataTypes.cidr_column": "192.168.0.0/24", - "unusualDataTypes.id": 1, + "unusualDataTypes.id": "1", "unusualDataTypes.inet_column": "192.168.0.1", "unusualDataTypes.json": Object { "key": "value1", @@ -120,7 +120,7 @@ Array [ "unusualDataTypes.bit_column": "00000001", "unusualDataTypes.boolean_column": false, "unusualDataTypes.cidr_column": "192.168.0.0/24", - "unusualDataTypes.id": 2, + "unusualDataTypes.id": "2", "unusualDataTypes.inet_column": "192.168.0.2", "unusualDataTypes.json": Object { "key": "value2", @@ -148,7 +148,7 @@ Array [ "unusualDataTypes.bit_column": "11110000", "unusualDataTypes.boolean_column": true, "unusualDataTypes.cidr_column": "192.168.0.0/24", - "unusualDataTypes.id": 3, + "unusualDataTypes.id": "3", "unusualDataTypes.inet_column": "192.168.0.3", "unusualDataTypes.json": Object { "key": "value3", diff --git a/packages/cubejs-testing/test/__snapshots__/driver-postgres.test.ts.snap b/packages/cubejs-testing/test/__snapshots__/driver-postgres.test.ts.snap index e14c2bc932491..83adac4827031 100644 --- a/packages/cubejs-testing/test/__snapshots__/driver-postgres.test.ts.snap +++ b/packages/cubejs-testing/test/__snapshots__/driver-postgres.test.ts.snap @@ -2762,8 +2762,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -2777,8 +2777,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -2797,8 +2797,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -2812,8 +2812,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -2832,8 +2832,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -2847,8 +2847,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -2862,8 +2862,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -2877,8 +2877,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -2892,8 +2892,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -2907,8 +2907,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -2922,8 +2922,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -2937,8 +2937,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -2957,8 +2957,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -2972,8 +2972,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -2987,8 +2987,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -3002,8 +3002,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -3017,8 +3017,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -3032,8 +3032,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -3047,8 +3047,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -3062,8 +3062,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -3086,8 +3086,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -3101,8 +3101,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -3121,8 +3121,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -3136,8 +3136,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -3156,8 +3156,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -3171,8 +3171,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -3186,8 +3186,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -3201,8 +3201,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -3216,8 +3216,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -3231,8 +3231,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -3246,8 +3246,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -3261,8 +3261,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -3276,8 +3276,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -3291,8 +3291,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -3306,8 +3306,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -3321,8 +3321,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -3341,8 +3341,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -3356,8 +3356,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -3371,8 +3371,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -3386,8 +3386,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -3401,8 +3401,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -3416,8 +3416,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -3431,8 +3431,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -3446,8 +3446,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -3461,8 +3461,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -3476,8 +3476,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -3491,8 +3491,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -3506,8 +3506,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -3530,8 +3530,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -3545,8 +3545,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -3560,8 +3560,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -3575,8 +3575,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -3595,8 +3595,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -3610,8 +3610,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -3625,8 +3625,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -3640,8 +3640,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -3660,8 +3660,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -3675,8 +3675,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -3690,8 +3690,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -3705,8 +3705,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -3720,8 +3720,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -3735,8 +3735,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -3750,8 +3750,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -3765,8 +3765,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -3780,8 +3780,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -3795,8 +3795,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -3810,8 +3810,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -3830,8 +3830,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -3845,8 +3845,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -3860,8 +3860,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -3875,8 +3875,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -3890,8 +3890,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -3905,8 +3905,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -3920,8 +3920,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -3935,8 +3935,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -3950,8 +3950,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -3965,8 +3965,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -3980,8 +3980,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -6373,8 +6373,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -6388,8 +6388,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -6403,8 +6403,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -6418,8 +6418,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -6433,8 +6433,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -6448,8 +6448,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -6463,8 +6463,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -6478,8 +6478,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -6493,8 +6493,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -6508,8 +6508,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -6523,8 +6523,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -6538,8 +6538,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -6553,8 +6553,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -6568,8 +6568,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -6583,8 +6583,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -6598,8 +6598,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -6613,8 +6613,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -6628,8 +6628,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -6643,8 +6643,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -6658,8 +6658,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -6673,8 +6673,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -6688,8 +6688,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech diNovo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -6703,8 +6703,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -6718,8 +6718,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -6733,8 +6733,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -6748,8 +6748,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -6763,8 +6763,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -6778,8 +6778,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -6793,8 +6793,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -6808,8 +6808,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -6823,8 +6823,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -6838,8 +6838,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -6853,8 +6853,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -6868,8 +6868,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -6883,8 +6883,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -6898,8 +6898,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -6913,8 +6913,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -6928,8 +6928,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -6943,8 +6943,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -6958,8 +6958,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -6973,8 +6973,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -6988,8 +6988,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -7003,8 +7003,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -7018,8 +7018,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -7038,8 +7038,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -7053,8 +7053,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -7068,8 +7068,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -7083,8 +7083,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -7098,8 +7098,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -7113,8 +7113,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -7128,8 +7128,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -7143,8 +7143,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -7158,8 +7158,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -7173,8 +7173,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -7188,8 +7188,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -7203,8 +7203,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -7218,8 +7218,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -7233,8 +7233,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -7248,8 +7248,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -7263,8 +7263,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -7278,8 +7278,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -7293,8 +7293,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -7308,8 +7308,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -7323,8 +7323,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -7338,8 +7338,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -7353,8 +7353,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech diNovo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -7368,8 +7368,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -7383,8 +7383,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -7398,8 +7398,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -7413,8 +7413,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -7428,8 +7428,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -7443,8 +7443,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -7458,8 +7458,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -7473,8 +7473,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -7488,8 +7488,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -7503,8 +7503,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -7518,8 +7518,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -7533,8 +7533,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -7548,8 +7548,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -7563,8 +7563,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -7578,8 +7578,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -7593,8 +7593,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -7608,8 +7608,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -7623,8 +7623,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -7638,8 +7638,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -7653,8 +7653,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -7668,8 +7668,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -7683,8 +7683,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -7703,8 +7703,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -7718,8 +7718,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -7733,8 +7733,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -7748,8 +7748,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -7763,8 +7763,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -7778,8 +7778,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -7793,8 +7793,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -7808,8 +7808,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -7823,8 +7823,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -7838,8 +7838,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -7858,8 +7858,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -7873,8 +7873,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -7888,8 +7888,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -7903,8 +7903,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -7918,8 +7918,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -7933,8 +7933,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -7948,8 +7948,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -7963,8 +7963,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -7978,8 +7978,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -7993,8 +7993,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -8013,8 +8013,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -8028,8 +8028,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -8043,8 +8043,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -8058,8 +8058,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -8073,8 +8073,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -8088,8 +8088,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -8103,8 +8103,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -8118,8 +8118,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -8133,8 +8133,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -8148,8 +8148,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -8168,8 +8168,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -8183,8 +8183,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -8198,8 +8198,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -8213,8 +8213,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -8228,8 +8228,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -8243,8 +8243,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -8258,8 +8258,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -8273,8 +8273,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -8288,8 +8288,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -8303,8 +8303,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -8323,8 +8323,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -8338,8 +8338,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -8353,8 +8353,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -8368,8 +8368,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -8383,8 +8383,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -8398,8 +8398,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -8413,8 +8413,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -8428,8 +8428,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -8443,8 +8443,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -8458,8 +8458,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -8478,8 +8478,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -8493,8 +8493,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -8508,8 +8508,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -8523,8 +8523,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -8538,8 +8538,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -8553,8 +8553,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -8568,8 +8568,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -8583,8 +8583,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -8598,8 +8598,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -8613,8 +8613,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -8633,8 +8633,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -8653,8 +8653,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -8673,8 +8673,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -8688,8 +8688,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -8703,8 +8703,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -8718,8 +8718,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -8733,8 +8733,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -8748,8 +8748,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -8763,8 +8763,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -8778,8 +8778,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -8793,8 +8793,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -8808,8 +8808,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -8823,8 +8823,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -8838,8 +8838,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -8853,8 +8853,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -8868,8 +8868,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -8883,8 +8883,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -8898,8 +8898,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -8913,8 +8913,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -8928,8 +8928,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -8943,8 +8943,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -8958,8 +8958,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -8973,8 +8973,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -8988,8 +8988,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech diNovo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -9003,8 +9003,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -9018,8 +9018,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -9033,8 +9033,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -9048,8 +9048,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -9063,8 +9063,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -9078,8 +9078,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -9093,8 +9093,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -9108,8 +9108,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -9123,8 +9123,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -9138,8 +9138,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -9153,8 +9153,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -9168,8 +9168,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -9183,8 +9183,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -9198,8 +9198,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -9213,8 +9213,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -9228,8 +9228,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -9243,8 +9243,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -9258,8 +9258,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -9273,8 +9273,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -9288,8 +9288,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -9303,8 +9303,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -9318,8 +9318,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -9338,8 +9338,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -9353,8 +9353,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -9368,8 +9368,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -9383,8 +9383,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -9398,8 +9398,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -9413,8 +9413,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -9428,8 +9428,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -9443,8 +9443,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -9458,8 +9458,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -9473,8 +9473,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -9488,8 +9488,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -9503,8 +9503,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -9518,8 +9518,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -9533,8 +9533,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -9548,8 +9548,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -9563,8 +9563,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -9578,8 +9578,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -9593,8 +9593,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -9608,8 +9608,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -9623,8 +9623,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -9638,8 +9638,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -9653,8 +9653,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech diNovo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -9668,8 +9668,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -9683,8 +9683,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -9698,8 +9698,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -9713,8 +9713,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -9728,8 +9728,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -9743,8 +9743,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -9758,8 +9758,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -9773,8 +9773,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -9788,8 +9788,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -9803,8 +9803,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -9818,8 +9818,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -9833,8 +9833,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -9848,8 +9848,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -9863,8 +9863,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -9878,8 +9878,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -9893,8 +9893,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -9908,8 +9908,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -9923,8 +9923,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -9938,8 +9938,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -9953,8 +9953,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -9968,8 +9968,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -9983,8 +9983,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -10003,8 +10003,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -10018,8 +10018,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -10033,8 +10033,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -10048,8 +10048,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -10063,8 +10063,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -10078,8 +10078,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -10093,8 +10093,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -10108,8 +10108,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -10123,8 +10123,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -10138,8 +10138,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -10153,8 +10153,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -10168,8 +10168,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -10183,8 +10183,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -10198,8 +10198,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -10213,8 +10213,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -10228,8 +10228,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -10243,8 +10243,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -10258,8 +10258,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -10273,8 +10273,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -10288,8 +10288,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -10303,8 +10303,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -10318,8 +10318,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech diNovo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -10333,8 +10333,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -10348,8 +10348,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -10363,8 +10363,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -10378,8 +10378,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -10393,8 +10393,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -10408,8 +10408,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -10423,8 +10423,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -10438,8 +10438,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -10453,8 +10453,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -10468,8 +10468,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -10483,8 +10483,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -10498,8 +10498,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -10513,8 +10513,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -10528,8 +10528,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -10543,8 +10543,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -10558,8 +10558,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -10573,8 +10573,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -10588,8 +10588,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -10603,8 +10603,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -10618,8 +10618,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -10633,8 +10633,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -10648,8 +10648,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -10668,8 +10668,8 @@ Array [ "ECommerce.orderId": "CA-2017-145142", "ECommerce.productName": "Balt Solid Wood Rectangular Table", "ECommerce.profit": "21.09800", - "ECommerce.quantity": 2, - "ECommerce.rowId": 523, + "ECommerce.quantity": "2", + "ECommerce.rowId": "523", "ECommerce.sales": "210.98000", "ECommerce.subCategory": "Tables", }, @@ -10683,8 +10683,8 @@ Array [ "ECommerce.orderId": "CA-2017-107503", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "8.55680", - "ECommerce.quantity": 4, - "ECommerce.rowId": 849, + "ECommerce.quantity": "4", + "ECommerce.rowId": "849", "ECommerce.sales": "48.89600", "ECommerce.subCategory": "Furnishings", }, @@ -10698,8 +10698,8 @@ Array [ "ECommerce.orderId": "CA-2017-118437", "ECommerce.productName": "Project Tote Personal File", "ECommerce.profit": "4.06870", - "ECommerce.quantity": 1, - "ECommerce.rowId": 1013, + "ECommerce.quantity": "1", + "ECommerce.rowId": "1013", "ECommerce.sales": "14.03000", "ECommerce.subCategory": "Storage", }, @@ -10713,8 +10713,8 @@ Array [ "ECommerce.orderId": "CA-2017-139661", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "3.66320", - "ECommerce.quantity": 2, - "ECommerce.rowId": 1494, + "ECommerce.quantity": "2", + "ECommerce.rowId": "1494", "ECommerce.sales": "9.64000", "ECommerce.subCategory": "Furnishings", }, @@ -10728,8 +10728,8 @@ Array [ "ECommerce.orderId": "CA-2017-133648", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "-2.11950", - "ECommerce.quantity": 3, - "ECommerce.rowId": 1995, + "ECommerce.quantity": "3", + "ECommerce.rowId": "1995", "ECommerce.sales": "11.30400", "ECommerce.subCategory": "Fasteners", }, @@ -10743,8 +10743,8 @@ Array [ "ECommerce.orderId": "CA-2017-138422", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", "ECommerce.profit": "5.20260", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2329, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2329", "ECommerce.sales": "14.35200", "ECommerce.subCategory": "Envelopes", }, @@ -10758,8 +10758,8 @@ Array [ "ECommerce.orderId": "CA-2017-140949", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", "ECommerce.profit": "13.60400", - "ECommerce.quantity": 8, - "ECommerce.rowId": 2455, + "ECommerce.quantity": "8", + "ECommerce.rowId": "2455", "ECommerce.sales": "71.60000", "ECommerce.subCategory": "Accessories", }, @@ -10773,8 +10773,8 @@ Array [ "ECommerce.orderId": "CA-2017-149048", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", "ECommerce.profit": "81.43200", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2595, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2595", "ECommerce.sales": "180.96000", "ECommerce.subCategory": "Envelopes", }, @@ -10788,8 +10788,8 @@ Array [ "ECommerce.orderId": "CA-2017-112515", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "77.57640", - "ECommerce.quantity": 3, - "ECommerce.rowId": 2655, + "ECommerce.quantity": "3", + "ECommerce.rowId": "2655", "ECommerce.sales": "1292.94000", "ECommerce.subCategory": "Bookcases", }, @@ -10803,8 +10803,8 @@ Array [ "ECommerce.orderId": "CA-2017-123372", "ECommerce.productName": "Google Nexus 5", "ECommerce.profit": "494.97250", - "ECommerce.quantity": 11, - "ECommerce.rowId": 2661, + "ECommerce.quantity": "11", + "ECommerce.rowId": "2661", "ECommerce.sales": "1979.89000", "ECommerce.subCategory": "Phones", }, @@ -10818,8 +10818,8 @@ Array [ "ECommerce.orderId": "CA-2017-134915", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "9.96520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 2952, + "ECommerce.quantity": "2", + "ECommerce.rowId": "2952", "ECommerce.sales": "113.88800", "ECommerce.subCategory": "Chairs", }, @@ -10833,8 +10833,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "10.39040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3059, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3059", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -10848,8 +10848,8 @@ Array [ "ECommerce.orderId": "CA-2017-131492", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", "ECommerce.profit": "-3.35060", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3060, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3060", "ECommerce.sales": "24.36800", "ECommerce.subCategory": "Tables", }, @@ -10863,8 +10863,8 @@ Array [ "ECommerce.orderId": "US-2017-132297", "ECommerce.productName": "Google Nexus 6", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 3083, + "ECommerce.quantity": "3", + "ECommerce.rowId": "3083", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -10878,8 +10878,8 @@ Array [ "ECommerce.orderId": "CA-2017-102554", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 3448, + "ECommerce.quantity": "2", + "ECommerce.rowId": "3448", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -10893,8 +10893,8 @@ Array [ "ECommerce.orderId": "CA-2017-144568", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "1.17750", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3717, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3717", "ECommerce.sales": "23.55000", "ECommerce.subCategory": "Fasteners", }, @@ -10908,8 +10908,8 @@ Array [ "ECommerce.orderId": "CA-2017-123001", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "2.72600", - "ECommerce.quantity": 5, - "ECommerce.rowId": 3934, + "ECommerce.quantity": "5", + "ECommerce.rowId": "3934", "ECommerce.sales": "9.40000", "ECommerce.subCategory": "Art", }, @@ -10923,8 +10923,8 @@ Array [ "ECommerce.orderId": "CA-2017-100811", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", "ECommerce.profit": "3.92960", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4012, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4012", "ECommerce.sales": "39.29600", "ECommerce.subCategory": "Storage", }, @@ -10938,8 +10938,8 @@ Array [ "ECommerce.orderId": "CA-2017-124296", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", "ECommerce.profit": "60.54880", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4031, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4031", "ECommerce.sales": "232.88000", "ECommerce.subCategory": "Chairs", }, @@ -10953,8 +10953,8 @@ Array [ "ECommerce.orderId": "CA-2017-115546", "ECommerce.productName": "Google Nexus 7", "ECommerce.profit": "134.99250", - "ECommerce.quantity": 3, - "ECommerce.rowId": 4161, + "ECommerce.quantity": "3", + "ECommerce.rowId": "4161", "ECommerce.sales": "539.97000", "ECommerce.subCategory": "Phones", }, @@ -10968,8 +10968,8 @@ Array [ "ECommerce.orderId": "CA-2017-120327", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "21.58240", - "ECommerce.quantity": 4, - "ECommerce.rowId": 4227, + "ECommerce.quantity": "4", + "ECommerce.rowId": "4227", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -10983,8 +10983,8 @@ Array [ "ECommerce.orderId": "CA-2017-143567", "ECommerce.productName": "Logitech diNovo Edge Keyboard", "ECommerce.profit": "517.47930", - "ECommerce.quantity": 9, - "ECommerce.rowId": 4882, + "ECommerce.quantity": "9", + "ECommerce.rowId": "4882", "ECommerce.sales": "2249.91000", "ECommerce.subCategory": "Accessories", }, @@ -10998,8 +10998,8 @@ Array [ "ECommerce.orderId": "CA-2017-145653", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "134.53020", - "ECommerce.quantity": 7, - "ECommerce.rowId": 5220, + "ECommerce.quantity": "7", + "ECommerce.rowId": "5220", "ECommerce.sales": "498.26000", "ECommerce.subCategory": "Chairs", }, @@ -11013,8 +11013,8 @@ Array [ "ECommerce.orderId": "CA-2017-147333", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 5277, + "ECommerce.quantity": "5", + "ECommerce.rowId": "5277", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -11028,8 +11028,8 @@ Array [ "ECommerce.orderId": "CA-2017-145772", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", "ECommerce.profit": "8.50250", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6125, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6125", "ECommerce.sales": "44.75000", "ECommerce.subCategory": "Accessories", }, @@ -11043,8 +11043,8 @@ Array [ "ECommerce.orderId": "CA-2017-145660", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", "ECommerce.profit": "1.73520", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6205, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6205", "ECommerce.sales": "7.71200", "ECommerce.subCategory": "Furnishings", }, @@ -11058,8 +11058,8 @@ Array [ "ECommerce.orderId": "CA-2017-102379", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "44.97500", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6272, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6272", "ECommerce.sales": "179.90000", "ECommerce.subCategory": "Art", }, @@ -11073,8 +11073,8 @@ Array [ "ECommerce.orderId": "US-2017-133361", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", "ECommerce.profit": "1.09040", - "ECommerce.quantity": 2, - "ECommerce.rowId": 6459, + "ECommerce.quantity": "2", + "ECommerce.rowId": "6459", "ECommerce.sales": "3.76000", "ECommerce.subCategory": "Art", }, @@ -11088,8 +11088,8 @@ Array [ "ECommerce.orderId": "US-2017-124779", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "15.49800", - "ECommerce.quantity": 5, - "ECommerce.rowId": 6651, + "ECommerce.quantity": "5", + "ECommerce.rowId": "6651", "ECommerce.sales": "45.92000", "ECommerce.subCategory": "Fasteners", }, @@ -11103,8 +11103,8 @@ Array [ "ECommerce.orderId": "US-2017-141677", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "569.99050", - "ECommerce.quantity": 5, - "ECommerce.rowId": 7174, + "ECommerce.quantity": "5", + "ECommerce.rowId": "7174", "ECommerce.sales": "2399.96000", "ECommerce.subCategory": "Copiers", }, @@ -11118,8 +11118,8 @@ Array [ "ECommerce.orderId": "CA-2017-109183", "ECommerce.productName": "Okidata C610n Printer", "ECommerce.profit": "-272.58000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7293, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7293", "ECommerce.sales": "649.00000", "ECommerce.subCategory": "Machines", }, @@ -11133,8 +11133,8 @@ Array [ "ECommerce.orderId": "CA-2017-112172", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", "ECommerce.profit": "0.70650", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7310, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7310", "ECommerce.sales": "14.13000", "ECommerce.subCategory": "Fasteners", }, @@ -11148,8 +11148,8 @@ Array [ "ECommerce.orderId": "CA-2017-135069", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "6.41760", - "ECommerce.quantity": 3, - "ECommerce.rowId": 7425, + "ECommerce.quantity": "3", + "ECommerce.rowId": "7425", "ECommerce.sales": "36.67200", "ECommerce.subCategory": "Furnishings", }, @@ -11163,8 +11163,8 @@ Array [ "ECommerce.orderId": "CA-2017-151799", "ECommerce.productName": "Canon PC1080F Personal Copier", "ECommerce.profit": "467.99220", - "ECommerce.quantity": 2, - "ECommerce.rowId": 7698, + "ECommerce.quantity": "2", + "ECommerce.rowId": "7698", "ECommerce.sales": "1199.98000", "ECommerce.subCategory": "Copiers", }, @@ -11178,8 +11178,8 @@ Array [ "ECommerce.orderId": "CA-2017-150091", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", "ECommerce.profit": "129.29400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8425, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8425", "ECommerce.sales": "2154.90000", "ECommerce.subCategory": "Bookcases", }, @@ -11193,8 +11193,8 @@ Array [ "ECommerce.orderId": "US-2017-119319", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", "ECommerce.profit": "-19.86400", - "ECommerce.quantity": 5, - "ECommerce.rowId": 8621, + "ECommerce.quantity": "5", + "ECommerce.rowId": "8621", "ECommerce.sales": "30.56000", "ECommerce.subCategory": "Furnishings", }, @@ -11208,8 +11208,8 @@ Array [ "ECommerce.orderId": "CA-2017-163265", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", "ECommerce.profit": "6.19920", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8673, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8673", "ECommerce.sales": "18.36800", "ECommerce.subCategory": "Fasteners", }, @@ -11223,8 +11223,8 @@ Array [ "ECommerce.orderId": "CA-2017-119284", "ECommerce.productName": "HTC One", "ECommerce.profit": "26.99730", - "ECommerce.quantity": 3, - "ECommerce.rowId": 8697, + "ECommerce.quantity": "3", + "ECommerce.rowId": "8697", "ECommerce.sales": "239.97600", "ECommerce.subCategory": "Phones", }, @@ -11238,8 +11238,8 @@ Array [ "ECommerce.orderId": "CA-2017-126928", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "225.60000", - "ECommerce.quantity": 4, - "ECommerce.rowId": 8878, + "ECommerce.quantity": "4", + "ECommerce.rowId": "8878", "ECommerce.sales": "480.00000", "ECommerce.subCategory": "Machines", }, @@ -11253,8 +11253,8 @@ Array [ "ECommerce.orderId": "CA-2017-105620", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", "ECommerce.profit": "-7.20000", - "ECommerce.quantity": 2, - "ECommerce.rowId": 8958, + "ECommerce.quantity": "2", + "ECommerce.rowId": "8958", "ECommerce.sales": "120.00000", "ECommerce.subCategory": "Machines", }, @@ -11268,8 +11268,8 @@ Array [ "ECommerce.orderId": "CA-2017-102925", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", "ECommerce.profit": "24.20120", - "ECommerce.quantity": 2, - "ECommerce.rowId": 9473, + "ECommerce.quantity": "2", + "ECommerce.rowId": "9473", "ECommerce.sales": "128.12400", "ECommerce.subCategory": "Chairs", }, @@ -11283,8 +11283,8 @@ Array [ "ECommerce.orderId": "CA-2017-116127", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", "ECommerce.profit": "-5.00980", - "ECommerce.quantity": 1, - "ECommerce.rowId": 9584, + "ECommerce.quantity": "1", + "ECommerce.rowId": "9584", "ECommerce.sales": "400.78400", "ECommerce.subCategory": "Bookcases", }, @@ -11298,8 +11298,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", "ECommerce.profit": "74.99850", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9618, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9618", "ECommerce.sales": "899.98200", "ECommerce.subCategory": "Copiers", }, @@ -11313,8 +11313,8 @@ Array [ "ECommerce.orderId": "CA-2017-160633", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", "ECommerce.profit": "5.39700", - "ECommerce.quantity": 3, - "ECommerce.rowId": 9619, + "ECommerce.quantity": "3", + "ECommerce.rowId": "9619", "ECommerce.sales": "86.35200", "ECommerce.subCategory": "Art", }, @@ -12124,253 +12124,253 @@ Array [ exports[`postgres driver tests querying ECommerce: count distinct approx by customer over productName by month_{"CUBEJS_DEV_MODE":"true","CUBEJS_WEB_SOCKETS":"true","CUBEJS_EXTERNAL_DEFAULT":"false","CUBEJS_SCHEDULED_REFRESH_DEFAULT":"true","CUBEJS_REFRESH_WORKER":"true","CUBEJS_ROLLUP_ONLY":"false"}: query 1`] = ` Array [ Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Canon PC1080F Personal Copier", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Okidata C610n Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Google Nexus 5", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Logitech diNovo Edge Keyboard", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-10-01T00:00:00.000", "ECommerce.orderDate.month": "2020-10-01T00:00:00.000", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-10-01T00:00:00.000", "ECommerce.orderDate.month": "2020-10-01T00:00:00.000", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-10-01T00:00:00.000", "ECommerce.orderDate.month": "2020-10-01T00:00:00.000", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-10-01T00:00:00.000", "ECommerce.orderDate.month": "2020-10-01T00:00:00.000", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "HTC One", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "Project Tote Personal File", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "Google Nexus 6", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "Google Nexus 7", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-04-01T00:00:00.000", "ECommerce.orderDate.month": "2020-04-01T00:00:00.000", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-03-01T00:00:00.000", "ECommerce.orderDate.month": "2020-03-01T00:00:00.000", "ECommerce.productName": "Canon PC1080F Personal Copier", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-03-01T00:00:00.000", "ECommerce.orderDate.month": "2020-03-01T00:00:00.000", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-02-01T00:00:00.000", "ECommerce.orderDate.month": "2020-02-01T00:00:00.000", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderDate.month": "2020-01-01T00:00:00.000", "ECommerce.productName": "Balt Solid Wood Rectangular Table", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderDate.month": "2020-01-01T00:00:00.000", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", @@ -12381,115 +12381,115 @@ Array [ exports[`postgres driver tests querying ECommerce: count distinct approx by customer over productName_{"CUBEJS_DEV_MODE":"true","CUBEJS_WEB_SOCKETS":"true","CUBEJS_EXTERNAL_DEFAULT":"false","CUBEJS_SCHEDULED_REFRESH_DEFAULT":"true","CUBEJS_REFRESH_WORKER":"true","CUBEJS_ROLLUP_ONLY":"false"}: query 1`] = ` Array [ Object { - "ECommerce.countApproxByCustomer": 4, + "ECommerce.countApproxByCustomer": "4", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", }, Object { - "ECommerce.countApproxByCustomer": 3, + "ECommerce.countApproxByCustomer": "3", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", }, Object { - "ECommerce.countApproxByCustomer": 3, + "ECommerce.countApproxByCustomer": "3", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", }, Object { - "ECommerce.countApproxByCustomer": 3, + "ECommerce.countApproxByCustomer": "3", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", }, Object { - "ECommerce.countApproxByCustomer": 3, + "ECommerce.countApproxByCustomer": "3", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Canon PC1080F Personal Copier", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Balt Solid Wood Rectangular Table", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Google Nexus 5", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Google Nexus 6", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Google Nexus 7", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "HTC One", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Logitech diNovo Edge Keyboard", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Okidata C610n Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Project Tote Personal File", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", }, ] @@ -12498,7 +12498,7 @@ Array [ exports[`postgres driver tests querying ECommerce: count distinct approx by customer_{"CUBEJS_DEV_MODE":"true","CUBEJS_WEB_SOCKETS":"true","CUBEJS_EXTERNAL_DEFAULT":"false","CUBEJS_SCHEDULED_REFRESH_DEFAULT":"true","CUBEJS_REFRESH_WORKER":"true","CUBEJS_ROLLUP_ONLY":"false"}: query 1`] = ` Array [ Object { - "ECommerce.countApproxByCustomer": 41, + "ECommerce.countApproxByCustomer": "41", }, ] `; @@ -12805,253 +12805,253 @@ Array [ exports[`postgres driver tests querying ECommerce: count distinct approx by customer over productName by month_{"CUBEJS_DEV_MODE":"true","CUBEJS_WEB_SOCKETS":"true","CUBEJS_EXTERNAL_DEFAULT":"true","CUBEJS_SCHEDULED_REFRESH_DEFAULT":"true","CUBEJS_REFRESH_WORKER":"true","CUBEJS_ROLLUP_ONLY":"false"}: query 1`] = ` Array [ Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Canon PC1080F Personal Copier", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Okidata C610n Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-12-01T00:00:00.000", "ECommerce.orderDate.month": "2020-12-01T00:00:00.000", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Google Nexus 5", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Logitech diNovo Edge Keyboard", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-11-01T00:00:00.000", "ECommerce.orderDate.month": "2020-11-01T00:00:00.000", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-10-01T00:00:00.000", "ECommerce.orderDate.month": "2020-10-01T00:00:00.000", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-10-01T00:00:00.000", "ECommerce.orderDate.month": "2020-10-01T00:00:00.000", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-10-01T00:00:00.000", "ECommerce.orderDate.month": "2020-10-01T00:00:00.000", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-10-01T00:00:00.000", "ECommerce.orderDate.month": "2020-10-01T00:00:00.000", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-09-01T00:00:00.000", "ECommerce.orderDate.month": "2020-09-01T00:00:00.000", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "HTC One", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-06-01T00:00:00.000", "ECommerce.orderDate.month": "2020-06-01T00:00:00.000", "ECommerce.productName": "Project Tote Personal File", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "Google Nexus 6", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "Google Nexus 7", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-05-01T00:00:00.000", "ECommerce.orderDate.month": "2020-05-01T00:00:00.000", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-04-01T00:00:00.000", "ECommerce.orderDate.month": "2020-04-01T00:00:00.000", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-03-01T00:00:00.000", "ECommerce.orderDate.month": "2020-03-01T00:00:00.000", "ECommerce.productName": "Canon PC1080F Personal Copier", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-03-01T00:00:00.000", "ECommerce.orderDate.month": "2020-03-01T00:00:00.000", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-02-01T00:00:00.000", "ECommerce.orderDate.month": "2020-02-01T00:00:00.000", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderDate.month": "2020-01-01T00:00:00.000", "ECommerce.productName": "Balt Solid Wood Rectangular Table", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.orderDate": "2020-01-01T00:00:00.000", "ECommerce.orderDate.month": "2020-01-01T00:00:00.000", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", @@ -13062,115 +13062,115 @@ Array [ exports[`postgres driver tests querying ECommerce: count distinct approx by customer over productName_{"CUBEJS_DEV_MODE":"true","CUBEJS_WEB_SOCKETS":"true","CUBEJS_EXTERNAL_DEFAULT":"true","CUBEJS_SCHEDULED_REFRESH_DEFAULT":"true","CUBEJS_REFRESH_WORKER":"true","CUBEJS_ROLLUP_ONLY":"false"}: query 1`] = ` Array [ Object { - "ECommerce.countApproxByCustomer": 4, + "ECommerce.countApproxByCustomer": "4", "ECommerce.productName": "Linden 10 Round Wall Clock, Black", }, Object { - "ECommerce.countApproxByCustomer": 3, + "ECommerce.countApproxByCustomer": "3", "ECommerce.productName": "Harbour Creations 67200 Series Stacking Chairs", }, Object { - "ECommerce.countApproxByCustomer": 3, + "ECommerce.countApproxByCustomer": "3", "ECommerce.productName": "OIC #2 Pencils, Medium Soft", }, Object { - "ECommerce.countApproxByCustomer": 3, + "ECommerce.countApproxByCustomer": "3", "ECommerce.productName": "Plymouth Boxed Rubber Bands by Plymouth", }, Object { - "ECommerce.countApproxByCustomer": 3, + "ECommerce.countApproxByCustomer": "3", "ECommerce.productName": "Vinyl Coated Wire Paper Clips in Organizer Box, 800/Box", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Canon PC1080F Personal Copier", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Global Adaptabilites Bookcase, Cherry/Storm Gray Finish", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Lexmark 20R1285 X6650 Wireless All-in-One Printer", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Magna Visual Magnetic Picture Hangers", }, Object { - "ECommerce.countApproxByCustomer": 2, + "ECommerce.countApproxByCustomer": "2", "ECommerce.productName": "Panasonic KP-380BK Classic Electric Pencil Sharpener", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Anderson Hickey Conga Table Tops & Accessories", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Balt Solid Wood Rectangular Table", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "DMI Eclipse Executive Suite Bookcases", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Google Nexus 5", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Google Nexus 6", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Google Nexus 7", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Hewlett Packard 610 Color Digital Copier / Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "HTC One", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Iceberg Nesting Folding Chair, 19w x 6d x 43h", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.0", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.1", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Kingston Digital DataTraveler 16GB USB 2.2", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Logitech diNovo Edge Keyboard", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Okidata C610n Printer", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Project Tote Personal File", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Recycled Eldon Regeneration Jumbo File", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Tyvek Side-Opening Peel & Seel Expanding Envelopes", }, Object { - "ECommerce.countApproxByCustomer": 1, + "ECommerce.countApproxByCustomer": "1", "ECommerce.productName": "Wausau Papers Astrobrights Colored Envelopes", }, ] @@ -13179,7 +13179,7 @@ Array [ exports[`postgres driver tests querying ECommerce: count distinct approx by customer_{"CUBEJS_DEV_MODE":"true","CUBEJS_WEB_SOCKETS":"true","CUBEJS_EXTERNAL_DEFAULT":"true","CUBEJS_SCHEDULED_REFRESH_DEFAULT":"true","CUBEJS_REFRESH_WORKER":"true","CUBEJS_ROLLUP_ONLY":"false"}: query 1`] = ` Array [ Object { - "ECommerce.countApproxByCustomer": 41, + "ECommerce.countApproxByCustomer": "41", }, ] `; diff --git a/packages/cubejs-testing/test/__snapshots__/smoke-rbac.test.ts.snap b/packages/cubejs-testing/test/__snapshots__/smoke-rbac.test.ts.snap index 1ca2b6054bd39..93130d9f003b5 100644 --- a/packages/cubejs-testing/test/__snapshots__/smoke-rbac.test.ts.snap +++ b/packages/cubejs-testing/test/__snapshots__/smoke-rbac.test.ts.snap @@ -103,43 +103,43 @@ exports[`Cube RBAC Engine RBAC via REST API line_items hidden price_dim: line_it Array [ Object { "line_items_view_no_policy.count": "3", - "line_items_view_no_policy.price_dim": 33, + "line_items_view_no_policy.price_dim": "33", }, Object { "line_items_view_no_policy.count": "1", - "line_items_view_no_policy.price_dim": 34, + "line_items_view_no_policy.price_dim": "34", }, Object { "line_items_view_no_policy.count": "1", - "line_items_view_no_policy.price_dim": 35, + "line_items_view_no_policy.price_dim": "35", }, Object { "line_items_view_no_policy.count": "7", - "line_items_view_no_policy.price_dim": 36, + "line_items_view_no_policy.price_dim": "36", }, Object { "line_items_view_no_policy.count": "3", - "line_items_view_no_policy.price_dim": 37, + "line_items_view_no_policy.price_dim": "37", }, Object { "line_items_view_no_policy.count": "3", - "line_items_view_no_policy.price_dim": 38, + "line_items_view_no_policy.price_dim": "38", }, Object { "line_items_view_no_policy.count": "2", - "line_items_view_no_policy.price_dim": 39, + "line_items_view_no_policy.price_dim": "39", }, Object { "line_items_view_no_policy.count": "3", - "line_items_view_no_policy.price_dim": 40, + "line_items_view_no_policy.price_dim": "40", }, Object { "line_items_view_no_policy.count": "5", - "line_items_view_no_policy.price_dim": 41, + "line_items_view_no_policy.price_dim": "41", }, Object { "line_items_view_no_policy.count": "2", - "line_items_view_no_policy.price_dim": 42, + "line_items_view_no_policy.price_dim": "42", }, ] `; diff --git a/packages/cubejs-testing/test/__snapshots__/smoke-trino.test.ts.snap b/packages/cubejs-testing/test/__snapshots__/smoke-trino.test.ts.snap index 896b158ecbbdd..1b50a90035b0c 100644 --- a/packages/cubejs-testing/test/__snapshots__/smoke-trino.test.ts.snap +++ b/packages/cubejs-testing/test/__snapshots__/smoke-trino.test.ts.snap @@ -5,27 +5,27 @@ Array [ Object { "Orders.createdAt": "2022-12-05T08:00:00.000", "Orders.createdAt.hour": "2022-12-05T08:00:00.000", - "Orders.totalAmount": 300, + "Orders.totalAmount": "300", }, Object { "Orders.createdAt": "2022-12-05T10:00:00.000", "Orders.createdAt.hour": "2022-12-05T10:00:00.000", - "Orders.totalAmount": 300, + "Orders.totalAmount": "300", }, Object { "Orders.createdAt": "2022-12-05T11:00:00.000", "Orders.createdAt.hour": "2022-12-05T11:00:00.000", - "Orders.totalAmount": 500, + "Orders.totalAmount": "500", }, Object { "Orders.createdAt": "2022-12-05T12:00:00.000", "Orders.createdAt.hour": "2022-12-05T12:00:00.000", - "Orders.totalAmount": 600, + "Orders.totalAmount": "600", }, Object { "Orders.createdAt": "2022-12-05T13:00:00.000", "Orders.createdAt.hour": "2022-12-05T13:00:00.000", - "Orders.totalAmount": 700, + "Orders.totalAmount": "700", }, ] `; diff --git a/packages/cubejs-testing/test/smoke-rbac.test.ts b/packages/cubejs-testing/test/smoke-rbac.test.ts index e11e3b1807316..1b1b0e431adc1 100644 --- a/packages/cubejs-testing/test/smoke-rbac.test.ts +++ b/packages/cubejs-testing/test/smoke-rbac.test.ts @@ -880,8 +880,8 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['masking_test.secret_number']).toBe(-1); - expect(row['masking_test.count']).toBe(12345); + expect(row['masking_test.secret_number']).toBe('-1'); + expect(row['masking_test.count']).toBe('12345'); } }); @@ -895,7 +895,7 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['masking_test.count']).not.toBe(12345); + expect(row['masking_test.count']).not.toBe('12345'); } }); @@ -910,7 +910,7 @@ describe('Cube RBAC Engine', () => { expect(rows.length).toBeGreaterThan(0); for (const row of rows) { expect(row['masking_test.total_quantity']).not.toBeNull(); - expect(row['masking_test.count']).toBe(12345); + expect(row['masking_test.count']).toBe('12345'); expect(row['masking_test.public_dim']).not.toBeNull(); } }); @@ -924,8 +924,8 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['masking_test.secret_number']).toBe(-1); - expect(row['masking_test.count']).toBe(12345); + expect(row['masking_test.secret_number']).toBe('-1'); + expect(row['masking_test.count']).toBe('12345'); } }); @@ -940,7 +940,7 @@ describe('Cube RBAC Engine', () => { expect(rows.length).toBeGreaterThan(0); for (const row of rows) { expect(row['masking_test.public_dim']).not.toBeNull(); - expect(row['masking_test.count']).toBe(12345); + expect(row['masking_test.count']).toBe('12345'); } }); @@ -956,7 +956,7 @@ describe('Cube RBAC Engine', () => { for (const row of rows) { expect(row['masking_test.public_dim']).not.toBeNull(); // count is masked, total_quantity is real - expect(row['masking_test.count']).toBe(12345); + expect(row['masking_test.count']).toBe('12345'); expect(row['masking_test.total_quantity']).not.toBeNull(); } }); @@ -969,8 +969,8 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['masking_view_masked.secret_number']).toBe(-1); - expect(row['masking_view_masked.count']).toBe(12345); + expect(row['masking_view_masked.secret_number']).toBe('-1'); + expect(row['masking_view_masked.count']).toBe('12345'); } }); @@ -984,7 +984,7 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['masking_view_masked.count']).not.toBe(12345); + expect(row['masking_view_masked.count']).not.toBe('12345'); } }); @@ -999,8 +999,8 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['masking_view.secret_number']).toBe(-1); - expect(row['masking_view.count']).toBe(12345); + expect(row['masking_view.secret_number']).toBe('-1'); + expect(row['masking_view.count']).toBe('12345'); } }); @@ -1019,7 +1019,7 @@ describe('Cube RBAC Engine', () => { expect(row['masking_view_over_hidden_cube.total_quantity']).not.toBeNull(); expect(row['masking_view_over_hidden_cube.public_dim']).not.toBeNull(); // count not in view memberLevel → masked - expect(row['masking_view_over_hidden_cube.count']).toBe(12345); + expect(row['masking_view_over_hidden_cube.count']).toBe('12345'); } }); @@ -1033,7 +1033,7 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['masking_view_over_hidden_cube.count']).not.toBe(12345); + expect(row['masking_view_over_hidden_cube.count']).not.toBe('12345'); } }); }); @@ -1222,7 +1222,7 @@ describe('Cube RBAC Engine', () => { for (const row of rows) { // mask.sql is CAST(${userAttributes.tenantId} AS INTEGER) // sc_test user has tenantId = '1', so masked_price should be 1 - expect(row['sc_ua_mask_test.masked_price']).toBe(1); + expect(row['sc_ua_mask_test.masked_price']).toBe('1'); } }); @@ -1235,7 +1235,7 @@ describe('Cube RBAC Engine', () => { expect(rows.length).toBeGreaterThan(0); for (const row of rows) { // mask.sql is ${CUBE}.product_id * -1, so masked_product should be negative - expect(row['sc_cube_mask_test.masked_product']).toBeLessThan(0); + expect(Number(row['sc_cube_mask_test.masked_product'])).toBeLessThan(0); } }); @@ -1248,7 +1248,7 @@ describe('Cube RBAC Engine', () => { expect(rows.length).toBeGreaterThan(0); for (const row of rows) { // sc_test user has tenantId = '1', so masked_status should be actual product_id - expect(row['yaml_ua_mask_test.masked_status']).toBeGreaterThan(0); + expect(Number(row['yaml_ua_mask_test.masked_status'])).toBeGreaterThan(0); } }); @@ -1261,7 +1261,7 @@ describe('Cube RBAC Engine', () => { expect(rows.length).toBeGreaterThan(0); for (const row of rows) { // mask.sql references ${orders.id} from a joined cube — the join must be resolved - expect(row['sc_joined_mask_test.masked_order_id']).toBeGreaterThan(0); + expect(Number(row['sc_joined_mask_test.masked_order_id'])).toBeGreaterThan(0); } }); @@ -1273,7 +1273,7 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['view_mask_test.view_mask_base_pid_full']).toBe(-1); + expect(row['view_mask_test.view_mask_base_pid_full']).toBe('-1'); } }); @@ -1285,7 +1285,7 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['view_mask_test.view_mask_base_pid_cube_ref']).toBe(-1); + expect(row['view_mask_test.view_mask_base_pid_cube_ref']).toBe('-1'); } }); @@ -1297,7 +1297,7 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['view_mask_test.view_mask_base_pid_cube_col']).toBe(-1); + expect(row['view_mask_test.view_mask_base_pid_cube_col']).toBe('-1'); } }); @@ -1309,7 +1309,7 @@ describe('Cube RBAC Engine', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['view_mask_test.view_mask_base_pid_cube_name']).toBe(-1); + expect(row['view_mask_test.view_mask_base_pid_cube_name']).toBe('-1'); } }); }); @@ -1628,7 +1628,7 @@ describe('Cube RBAC Engine [Tesseract]', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['sc_ua_mask_test.masked_price']).toBe(1); + expect(row['sc_ua_mask_test.masked_price']).toBe('1'); } }); @@ -1640,7 +1640,7 @@ describe('Cube RBAC Engine [Tesseract]', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['sc_cube_mask_test.masked_product']).toBeLessThan(0); + expect(Number(row['sc_cube_mask_test.masked_product'])).toBeLessThan(0); } }); @@ -1652,7 +1652,7 @@ describe('Cube RBAC Engine [Tesseract]', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['yaml_ua_mask_test.masked_status']).toBeGreaterThan(0); + expect(Number(row['yaml_ua_mask_test.masked_status'])).toBeGreaterThan(0); } }); @@ -1664,7 +1664,7 @@ describe('Cube RBAC Engine [Tesseract]', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['sc_joined_mask_test.masked_order_id']).toBeGreaterThan(0); + expect(Number(row['sc_joined_mask_test.masked_order_id'])).toBeGreaterThan(0); } }); @@ -1676,7 +1676,7 @@ describe('Cube RBAC Engine [Tesseract]', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['view_mask_test.view_mask_base_pid_full']).toBe(-1); + expect(row['view_mask_test.view_mask_base_pid_full']).toBe('-1'); } }); @@ -1688,7 +1688,7 @@ describe('Cube RBAC Engine [Tesseract]', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['view_mask_test.view_mask_base_pid_cube_ref']).toBe(-1); + expect(row['view_mask_test.view_mask_base_pid_cube_ref']).toBe('-1'); } }); @@ -1700,7 +1700,7 @@ describe('Cube RBAC Engine [Tesseract]', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['view_mask_test.view_mask_base_pid_cube_col']).toBe(-1); + expect(row['view_mask_test.view_mask_base_pid_cube_col']).toBe('-1'); } }); @@ -1712,7 +1712,7 @@ describe('Cube RBAC Engine [Tesseract]', () => { const rows = result.rawData(); expect(rows.length).toBeGreaterThan(0); for (const row of rows) { - expect(row['view_mask_test.view_mask_base_pid_cube_name']).toBe(-1); + expect(row['view_mask_test.view_mask_base_pid_cube_name']).toBe('-1'); } }); }); diff --git a/rust/cube/cubeorchestrator/src/query_message_parser.rs b/rust/cube/cubeorchestrator/src/query_message_parser.rs index 2fa60272d571c..7b4d1bcd151bc 100644 --- a/rust/cube/cubeorchestrator/src/query_message_parser.rs +++ b/rust/cube/cubeorchestrator/src/query_message_parser.rs @@ -733,6 +733,12 @@ mod tests { ] ); + // Numeric values serialize as JSON strings, matching the legacy result set. + let amounts_json = serde_json::to_value(result.data[1].as_slice()).unwrap(); + assert_eq!(amounts_json[0], "1.5"); + assert_eq!(amounts_json[1], "2"); + assert_eq!(amounts_json[2], serde_json::Value::Null); + // Timestamps land in the dedicated variant and serialize to the ISO format. match &result.data[2].as_slice()[0] { DBResponsePrimitive::Timestamp(_) => {} diff --git a/rust/cube/cubeorchestrator/src/query_result_transform.rs b/rust/cube/cubeorchestrator/src/query_result_transform.rs index 35f761fc62442..8be457a5c2830 100644 --- a/rust/cube/cubeorchestrator/src/query_result_transform.rs +++ b/rust/cube/cubeorchestrator/src/query_result_transform.rs @@ -1182,16 +1182,20 @@ const TIMESTAMP_ITEMS: &[Item<'static>] = &[ Item::Fixed(Fixed::Nanosecond3), ]; -// Hand-written `Serialize` mirroring serde's untagged behavior for the JSON-native -// variants, plus a string rendering for `Timestamp`. +// Hand-written `Serialize`. Numeric variants (`Int64`/`UInt64`/`Float64`) are +// rendered as JSON strings, not numbers: the legacy CubeStore result set carried +// every value as a string, and downstream consumers (and snapshots) rely on that +// shape. The Arrow path produces real numeric primitives, so we stringify them +// here to keep the JSON output identical to the legacy path. `Timestamp` is also +// string-rendered; `Boolean`/`Null`/`String` map to their JSON-native forms. impl Serialize for DBResponsePrimitive { fn serialize(&self, serializer: S) -> Result { match self { DBResponsePrimitive::Null => serializer.serialize_none(), DBResponsePrimitive::Boolean(b) => serializer.serialize_bool(*b), - DBResponsePrimitive::Int64(n) => serializer.serialize_i64(*n), - DBResponsePrimitive::UInt64(n) => serializer.serialize_u64(*n), - DBResponsePrimitive::Float64(n) => serializer.serialize_f64(*n), + DBResponsePrimitive::Int64(n) => serializer.collect_str(n), + DBResponsePrimitive::UInt64(n) => serializer.collect_str(n), + DBResponsePrimitive::Float64(n) => serializer.collect_str(n), DBResponsePrimitive::String(s) => serializer.serialize_str(s), DBResponsePrimitive::Timestamp(dt) => { serializer.collect_str(&dt.format_with_items(TIMESTAMP_ITEMS.iter())) From 462517392432a2e5c244af73c305fbb2bc543f4f Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Mon, 6 Jul 2026 15:29:04 +0200 Subject: [PATCH 21/24] feat(query-orchestrator)!: Increase default continueWaitTimeout from 5s to 10s Raise the default long-polling interval so clients poll less aggressively and short-to-medium queries are more likely to return a result on the first request instead of a `Continue wait`. BREAKING CHANGE: The default `continueWaitTimeout` changes from 5 to 10 seconds. Deployments relying on the previous 5s default will now wait up to 10s before returning `Continue wait`. Set `continueWaitTimeout: 5` explicitly in orchestratorOptions/queueOptions to keep the old behavior. --- docs-mintlify/reference/configuration/config.mdx | 2 +- docs/content/product/configuration/reference/config.mdx | 2 +- .../cubejs-query-orchestrator/src/orchestrator/QueryQueue.ts | 2 +- packages/cubejs-server-core/src/core/OrchestratorApi.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs-mintlify/reference/configuration/config.mdx b/docs-mintlify/reference/configuration/config.mdx index 16121ac4fb150..36786b1a3f46e 100644 --- a/docs-mintlify/reference/configuration/config.mdx +++ b/docs-mintlify/reference/configuration/config.mdx @@ -487,7 +487,7 @@ You can pass this object to set advanced options for the query orchestrator. | Option | Description | Default Value | |------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| -| `continueWaitTimeout` | Long polling interval in seconds, maximum is 90 | `5` | +| `continueWaitTimeout` | Long polling interval in seconds, maximum is 90 | `10` | | `rollupOnlyMode` | When enabled, an error will be thrown if a query can't be served from a pre-aggregation (rollup) | `false` | | `queryCacheOptions` | Query cache options for DB queries | `{}` | | `queryCacheOptions.refreshKeyRenewalThreshold` | Time in seconds to cache the result of [`refresh_key`][ref-schema-cube-ref-refresh-key] check | `defined by DB dialect` | diff --git a/docs/content/product/configuration/reference/config.mdx b/docs/content/product/configuration/reference/config.mdx index 8cbd7a15a0180..cb14a821415e8 100644 --- a/docs/content/product/configuration/reference/config.mdx +++ b/docs/content/product/configuration/reference/config.mdx @@ -446,7 +446,7 @@ You can pass this object to set advanced options for the query orchestrator. | Option | Description | Default Value | |------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| -| `continueWaitTimeout` | Long polling interval in seconds, maximum is 90 | `5` | +| `continueWaitTimeout` | Long polling interval in seconds, maximum is 90 | `10` | | `rollupOnlyMode` | When enabled, an error will be thrown if a query can't be served from a pre-aggregation (rollup) | `false` | | `queryCacheOptions` | Query cache options for DB queries | `{}` | | `queryCacheOptions.refreshKeyRenewalThreshold` | Time in seconds to cache the result of [`refresh_key`][ref-schema-cube-ref-refresh-key] check | `defined by DB dialect` | diff --git a/packages/cubejs-query-orchestrator/src/orchestrator/QueryQueue.ts b/packages/cubejs-query-orchestrator/src/orchestrator/QueryQueue.ts index d3699314f818b..df761e22ef41c 100644 --- a/packages/cubejs-query-orchestrator/src/orchestrator/QueryQueue.ts +++ b/packages/cubejs-query-orchestrator/src/orchestrator/QueryQueue.ts @@ -112,7 +112,7 @@ export class QueryQueue { options: QueryQueueOptions ) { this.concurrency = options.concurrency || 2; - this.continueWaitTimeout = options.continueWaitTimeout || 5; + this.continueWaitTimeout = options.continueWaitTimeout || 10; this.executionTimeout = options.executionTimeout || getEnv('dbQueryTimeout'); this.orphanedTimeout = options.orphanedTimeout || 120; this.heartBeatInterval = options.heartBeatInterval || 30; diff --git a/packages/cubejs-server-core/src/core/OrchestratorApi.ts b/packages/cubejs-server-core/src/core/OrchestratorApi.ts index e4c8b910b04e6..1d9fb163d7f05 100644 --- a/packages/cubejs-server-core/src/core/OrchestratorApi.ts +++ b/packages/cubejs-server-core/src/core/OrchestratorApi.ts @@ -30,7 +30,7 @@ export class OrchestratorApi { protected readonly logger, protected readonly options: OrchestratorApiOptions ) { - this.continueWaitTimeout = this.options.continueWaitTimeout || 5; + this.continueWaitTimeout = this.options.continueWaitTimeout || 10; this.orchestrator = new QueryOrchestrator( options.redisPrefix || 'STANDALONE', From 1635ffd9dc3bf1de886bd6de6a1ab86068918942 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Mon, 6 Jul 2026 16:39:14 +0200 Subject: [PATCH 22/24] v1.7.0 --- CHANGELOG.md | 49 ++++++++++++++++ lerna.json | 2 +- packages/cubejs-api-gateway/CHANGELOG.md | 14 +++++ packages/cubejs-api-gateway/package.json | 10 ++-- packages/cubejs-athena-driver/CHANGELOG.md | 4 ++ packages/cubejs-athena-driver/package.json | 10 ++-- packages/cubejs-backend-cloud/CHANGELOG.md | 4 ++ packages/cubejs-backend-cloud/package.json | 6 +- packages/cubejs-backend-maven/CHANGELOG.md | 4 ++ packages/cubejs-backend-maven/package.json | 6 +- packages/cubejs-backend-native/CHANGELOG.md | 15 +++++ packages/cubejs-backend-native/package.json | 8 +-- packages/cubejs-backend-shared/CHANGELOG.md | 12 ++++ packages/cubejs-backend-shared/package.json | 4 +- packages/cubejs-base-driver/CHANGELOG.md | 4 ++ packages/cubejs-base-driver/package.json | 6 +- packages/cubejs-bigquery-driver/CHANGELOG.md | 4 ++ packages/cubejs-bigquery-driver/package.json | 8 +-- packages/cubejs-cli/CHANGELOG.md | 4 ++ packages/cubejs-cli/package.json | 12 ++-- .../cubejs-clickhouse-driver/CHANGELOG.md | 4 ++ .../cubejs-clickhouse-driver/package.json | 10 ++-- packages/cubejs-client-core/CHANGELOG.md | 8 +++ packages/cubejs-client-core/package.json | 4 +- packages/cubejs-client-dx/CHANGELOG.md | 8 +++ packages/cubejs-client-dx/package.json | 2 +- packages/cubejs-client-ngx/CHANGELOG.md | 4 ++ packages/cubejs-client-ngx/package.json | 2 +- packages/cubejs-client-react/CHANGELOG.md | 4 ++ packages/cubejs-client-react/package.json | 4 +- packages/cubejs-client-vue3/CHANGELOG.md | 8 +++ packages/cubejs-client-vue3/package.json | 4 +- .../cubejs-client-ws-transport/CHANGELOG.md | 4 ++ .../cubejs-client-ws-transport/package.json | 6 +- packages/cubejs-crate-driver/CHANGELOG.md | 4 ++ packages/cubejs-crate-driver/package.json | 10 ++-- packages/cubejs-cubestore-driver/CHANGELOG.md | 6 ++ packages/cubejs-cubestore-driver/package.json | 12 ++-- .../CHANGELOG.md | 4 ++ .../package.json | 12 ++-- .../cubejs-dbt-schema-extension/CHANGELOG.md | 4 ++ .../cubejs-dbt-schema-extension/package.json | 8 +-- packages/cubejs-docker/CHANGELOG.md | 20 +++++++ packages/cubejs-docker/package.json | 58 +++++++++---------- packages/cubejs-dremio-driver/CHANGELOG.md | 4 ++ packages/cubejs-dremio-driver/package.json | 12 ++-- packages/cubejs-druid-driver/CHANGELOG.md | 4 ++ packages/cubejs-druid-driver/package.json | 10 ++-- packages/cubejs-duckdb-driver/CHANGELOG.md | 4 ++ packages/cubejs-duckdb-driver/package.json | 12 ++-- packages/cubejs-firebolt-driver/CHANGELOG.md | 4 ++ packages/cubejs-firebolt-driver/package.json | 12 ++-- packages/cubejs-hive-driver/CHANGELOG.md | 4 ++ packages/cubejs-hive-driver/package.json | 8 +-- packages/cubejs-jdbc-driver/CHANGELOG.md | 6 ++ packages/cubejs-jdbc-driver/package.json | 8 +-- packages/cubejs-ksql-driver/CHANGELOG.md | 4 ++ packages/cubejs-ksql-driver/package.json | 10 ++-- packages/cubejs-linter/CHANGELOG.md | 4 ++ packages/cubejs-linter/package.json | 2 +- .../cubejs-materialize-driver/CHANGELOG.md | 4 ++ .../cubejs-materialize-driver/package.json | 12 ++-- packages/cubejs-mongobi-driver/CHANGELOG.md | 4 ++ packages/cubejs-mongobi-driver/package.json | 8 +-- packages/cubejs-mssql-driver/CHANGELOG.md | 4 ++ packages/cubejs-mssql-driver/package.json | 6 +- .../CHANGELOG.md | 4 ++ .../package.json | 8 +-- packages/cubejs-mysql-driver/CHANGELOG.md | 10 ++++ packages/cubejs-mysql-driver/package.json | 10 ++-- packages/cubejs-oracle-driver/CHANGELOG.md | 4 ++ packages/cubejs-oracle-driver/package.json | 6 +- packages/cubejs-pinot-driver/CHANGELOG.md | 4 ++ packages/cubejs-pinot-driver/package.json | 10 ++-- packages/cubejs-playground/CHANGELOG.md | 8 +++ packages/cubejs-playground/package.json | 6 +- packages/cubejs-postgres-driver/CHANGELOG.md | 4 ++ packages/cubejs-postgres-driver/package.json | 10 ++-- packages/cubejs-prestodb-driver/CHANGELOG.md | 4 ++ packages/cubejs-prestodb-driver/package.json | 8 +-- .../cubejs-query-orchestrator/CHANGELOG.md | 13 +++++ .../cubejs-query-orchestrator/package.json | 10 ++-- packages/cubejs-questdb-driver/CHANGELOG.md | 4 ++ packages/cubejs-questdb-driver/package.json | 12 ++-- packages/cubejs-redshift-driver/CHANGELOG.md | 4 ++ packages/cubejs-redshift-driver/package.json | 10 ++-- packages/cubejs-schema-compiler/CHANGELOG.md | 14 +++++ packages/cubejs-schema-compiler/package.json | 12 ++-- packages/cubejs-server-core/CHANGELOG.md | 17 ++++++ packages/cubejs-server-core/package.json | 24 ++++---- packages/cubejs-server/CHANGELOG.md | 4 ++ packages/cubejs-server/package.json | 14 ++--- packages/cubejs-snowflake-driver/CHANGELOG.md | 4 ++ packages/cubejs-snowflake-driver/package.json | 8 +-- packages/cubejs-sqlite-driver/CHANGELOG.md | 4 ++ packages/cubejs-sqlite-driver/package.json | 8 +-- packages/cubejs-templates/CHANGELOG.md | 4 ++ packages/cubejs-templates/package.json | 6 +- packages/cubejs-testing-drivers/CHANGELOG.md | 18 ++++++ packages/cubejs-testing-drivers/package.json | 38 ++++++------ packages/cubejs-testing-shared/CHANGELOG.md | 6 ++ packages/cubejs-testing-shared/package.json | 10 ++-- packages/cubejs-testing/CHANGELOG.md | 16 +++++ packages/cubejs-testing/package.json | 22 +++---- packages/cubejs-trino-driver/CHANGELOG.md | 4 ++ packages/cubejs-trino-driver/package.json | 12 ++-- packages/cubejs-vertica-driver/CHANGELOG.md | 4 ++ packages/cubejs-vertica-driver/package.json | 14 ++--- rust/cubesql/CHANGELOG.md | 8 +++ rust/cubesql/package.json | 2 +- rust/cubestore/CHANGELOG.md | 7 +++ rust/cubestore/Cargo.lock | 2 +- rust/cubestore/cubestore/Cargo.toml | 2 +- rust/cubestore/package.json | 6 +- 114 files changed, 694 insertions(+), 287 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e468f94c9707..8e72f0b76c06e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,55 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +### Bug Fixes + +- **mysql-driver:** Use string for decimal values ([4f2d3b9](https://github.com/cube-js/cube/commit/4f2d3b9416834ab87dbf84b24bed1e132bf2e512)) + +- feat(query-orchestrator)!: Increase default continueWaitTimeout from 5s to 10s ([4625173](https://github.com/cube-js/cube/commit/462517392432a2e5c244af73c305fbb2bc543f4f)) +- fix(cubeorchestrator)!: Serialize all numeric query results as JSON strings, fix #1879 ([bd88651](https://github.com/cube-js/cube/commit/bd8865113889b5153ed837c3dc51bc6bca5d3585)), closes [#1879](https://github.com/cube-js/cube/issues/1879) +- feat(docker)!: Upgrade OpenJDK from 17 to 21 ([9d00c83](https://github.com/cube-js/cube/commit/9d00c83b4af7f749dfb5329d93fe8b2f165edcda)) +- feat(docker)!: Upgrade Python from 3.11 to 3.13 ([f3875ec](https://github.com/cube-js/cube/commit/f3875ec1826dcae4c489c68a6e3b7a2f06569200)) +- feat(server-core)!: Remove deprecated dbType option (#11045) ([08a2a6b](https://github.com/cube-js/cube/commit/08a2a6b37efb450377383fbb0e5041fff106cff2)), closes [#11045](https://github.com/cube-js/cube/issues/11045) +- feat!: Remove deprecated context_to_roles configuration option (#11055) ([41d42d6](https://github.com/cube-js/cube/commit/41d42d669486e763ad984fda5e64e33438baa5a4)), closes [#11055](https://github.com/cube-js/cube/issues/11055) +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) +- feat!: Remove deprecated CUBEJS_SCHEDULED_REFRESH_CONCURRENCY env variable (#11048) ([44fee72](https://github.com/cube-js/cube/commit/44fee72ac84f630427e4a2038797fec20b8d018c)), closes [#11048](https://github.com/cube-js/cube/issues/11048) +- feat(schema-compiler)!: Remove deprecated running_total measure type (#11044) ([f45ea45](https://github.com/cube-js/cube/commit/f45ea456e4c3bfdc3663f8c992c911fdc9ed3730)), closes [#11044](https://github.com/cube-js/cube/issues/11044) +- feat!: remove deprecated Elasticsearch driver ([99c98ad](https://github.com/cube-js/cube/commit/99c98adb8f94d78b7add5f36c4f2dfc684876831)) + +### Features + +- **cubeorchestrator:** Use Arrow format for CubeStore response format ([78ddac2](https://github.com/cube-js/cube/commit/78ddac22db3258f2f2cf60bb772ae90aa1cb0282)), closes [#1705](https://github.com/cube-js/cube/issues/1705) +- **cubestore:** Upgrade docker image to Debian trixie and LLVM 22 ([1cb96ce](https://github.com/cube-js/cube/commit/1cb96ce2c788bd416c50bf6476c5533b403a44fa)) +- **docker:** Upgrade Debian to Trixie ([45b2967](https://github.com/cube-js/cube/commit/45b2967499c5323d6164ab3915c2ede69185e55a)) +- **docker:** Upgrade Node.js to v24 (24.18.0) ([93ff587](https://github.com/cube-js/cube/commit/93ff587457dba70801d84051b5c26efc44dfbd96)) +- **mysql-driver:** Migrate driver to mysql2 library, thanks [@nathanfallet](https://github.com/nathanfallet) ([553b7ef](https://github.com/cube-js/cube/commit/553b7ef98f1fdf050013aaa81ab629bcc3bbeddc)) +- **native:** Initial support for Python 3.13 ([#9930](https://github.com/cube-js/cube/issues/9930)) ([f91a237](https://github.com/cube-js/cube/commit/f91a23728614dde9b9dc28b4e2a4662439670428)) + +### BREAKING CHANGES + +- The default `continueWaitTimeout` changes from 5 to 10 + seconds. Deployments relying on the previous 5s default will now wait up + to 10s before returning `Continue wait`. Set `continueWaitTimeout: 5` + explicitly in orchestratorOptions/queueOptions to keep the old behavior. +- All numeric values in query results are now serialized + as JSON strings regardless of the data source driver. Previously the + JSON type of numeric values varied by driver (string or number). + Clients that relied on receiving JSON numbers must parse the string + values instead. +- The -jdk image now runs Java 21. JDBC drivers and custom JARs + must be compatible with OpenJDK 21. +- Users who install custom Python packages into the Cube image + (e.g. for Python/Jinja data models) must target Python 3.13. Packages built for + 3.11 will not load. +- CreateOptions.dbType has been removed. Use driverFactory instead. +- The context_to_roles (contextToRoles) configuration option has been removed. It was deprecated in v1.6.4. Use context_to_groups (contextToGroups) instead. +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. +- The CUBEJS_SCHEDULED_REFRESH_CONCURRENCY environment variable has been removed. It was deprecated in v1.2.7. Use CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID instead. +- The running_total measure type has been removed. Data models that use `type: running_total` will now fail validation. Replace them with a rolling_window measure using an unbounded trailing window. +- The Elasticsearch driver has been removed. It was deprecated in v1.6.0. There is no drop-in replacement. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) ### Bug Fixes diff --git a/lerna.json b/lerna.json index f4e4783e098a3..aed4e25e6abd9 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.6.67", + "version": "1.7.0", "npmClient": "yarn", "command": { "bootstrap": { diff --git a/packages/cubejs-api-gateway/CHANGELOG.md b/packages/cubejs-api-gateway/CHANGELOG.md index 4d984d6509d6c..5177339ec4369 100644 --- a/packages/cubejs-api-gateway/CHANGELOG.md +++ b/packages/cubejs-api-gateway/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- fix(cubeorchestrator)!: Serialize all numeric query results as JSON strings, fix #1879 ([bd88651](https://github.com/cube-js/cube/commit/bd8865113889b5153ed837c3dc51bc6bca5d3585)), closes [#1879](https://github.com/cube-js/cube/issues/1879) +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) + +### BREAKING CHANGES + +- All numeric values in query results are now serialized + as JSON strings regardless of the data source driver. Previously the + JSON type of numeric values varied by driver (string or number). + Clients that relied on receiving JSON numbers must parse the string + values instead. +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) ### Features diff --git a/packages/cubejs-api-gateway/package.json b/packages/cubejs-api-gateway/package.json index d6da87ac62d76..177c06e13cea5 100644 --- a/packages/cubejs-api-gateway/package.json +++ b/packages/cubejs-api-gateway/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/api-gateway", "description": "Cube API Gateway", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,9 +27,9 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/native": "1.6.67", - "@cubejs-backend/query-orchestrator": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/native": "1.7.0", + "@cubejs-backend/query-orchestrator": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "@ungap/structured-clone": "^0.3.4", "assert-never": "^1.4.0", "body-parser": "^1.19.0", @@ -53,7 +53,7 @@ "zod": "^4.1.13" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/express": "^4.17.21", "@types/jest": "^29", "@types/jsonwebtoken": "^9.0.2", diff --git a/packages/cubejs-athena-driver/CHANGELOG.md b/packages/cubejs-athena-driver/CHANGELOG.md index b5b16992555bc..62278bbe1b7db 100644 --- a/packages/cubejs-athena-driver/CHANGELOG.md +++ b/packages/cubejs-athena-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/athena-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/athena-driver diff --git a/packages/cubejs-athena-driver/package.json b/packages/cubejs-athena-driver/package.json index 1ae872525770c..80e89371e6c19 100644 --- a/packages/cubejs-athena-driver/package.json +++ b/packages/cubejs-athena-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/athena-driver", "description": "Cube.js Athena database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -30,13 +30,13 @@ "dependencies": { "@aws-sdk/client-athena": "^3.22.0", "@aws-sdk/credential-providers": "^3.22.0", - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "sqlstring": "^2.3.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "@types/ramda": "^0.27.40", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-backend-cloud/CHANGELOG.md b/packages/cubejs-backend-cloud/CHANGELOG.md index 227b2d0a72a12..e8af2e9c664cb 100644 --- a/packages/cubejs-backend-cloud/CHANGELOG.md +++ b/packages/cubejs-backend-cloud/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/cloud + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/cloud diff --git a/packages/cubejs-backend-cloud/package.json b/packages/cubejs-backend-cloud/package.json index 1718cfd4cde12..27005e3e3e54f 100644 --- a/packages/cubejs-backend-cloud/package.json +++ b/packages/cubejs-backend-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cloud", - "version": "1.6.67", + "version": "1.7.0", "description": "Cube Cloud package", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -30,7 +30,7 @@ "devDependencies": { "@babel/core": "^7.24.5", "@babel/preset-env": "^7.24.5", - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/fs-extra": "^9.0.8", "@types/jest": "^29", "jest": "^29", @@ -38,7 +38,7 @@ }, "dependencies": { "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/shared": "1.7.0", "chokidar": "^3.5.1", "env-var": "^6.3.0", "form-data": "^4.0.0", diff --git a/packages/cubejs-backend-maven/CHANGELOG.md b/packages/cubejs-backend-maven/CHANGELOG.md index d5f4b45c4a3cd..320f30aa7cd33 100644 --- a/packages/cubejs-backend-maven/CHANGELOG.md +++ b/packages/cubejs-backend-maven/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/maven + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/maven diff --git a/packages/cubejs-backend-maven/package.json b/packages/cubejs-backend-maven/package.json index 3bfbbab7f42d7..95c15d83aa1f6 100644 --- a/packages/cubejs-backend-maven/package.json +++ b/packages/cubejs-backend-maven/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/maven", "description": "Cube.js Maven Wrapper for java dependencies downloading", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "license": "Apache-2.0", "repository": { "type": "git", @@ -31,12 +31,12 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/shared": "1.7.0", "source-map-support": "^0.5.19", "xmlbuilder2": "^2.4.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "@types/node": "^22", "jest": "^29", diff --git a/packages/cubejs-backend-native/CHANGELOG.md b/packages/cubejs-backend-native/CHANGELOG.md index 223a39a8cc856..51d26d642e945 100644 --- a/packages/cubejs-backend-native/CHANGELOG.md +++ b/packages/cubejs-backend-native/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(server-core)!: Remove deprecated dbType option (#11045) ([08a2a6b](https://github.com/cube-js/cube/commit/08a2a6b37efb450377383fbb0e5041fff106cff2)), closes [#11045](https://github.com/cube-js/cube/issues/11045) +- feat!: Remove deprecated context_to_roles configuration option (#11055) ([41d42d6](https://github.com/cube-js/cube/commit/41d42d669486e763ad984fda5e64e33438baa5a4)), closes [#11055](https://github.com/cube-js/cube/issues/11055) + +### Features + +- **cubeorchestrator:** Use Arrow format for CubeStore response format ([78ddac2](https://github.com/cube-js/cube/commit/78ddac22db3258f2f2cf60bb772ae90aa1cb0282)), closes [#1705](https://github.com/cube-js/cube/issues/1705) +- **native:** Initial support for Python 3.13 ([#9930](https://github.com/cube-js/cube/issues/9930)) ([f91a237](https://github.com/cube-js/cube/commit/f91a23728614dde9b9dc28b4e2a4662439670428)) + +### BREAKING CHANGES + +- CreateOptions.dbType has been removed. Use driverFactory instead. +- The context_to_roles (contextToRoles) configuration option has been removed. It was deprecated in v1.6.4. Use context_to_groups (contextToGroups) instead. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/native diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json index 0164f994059ba..94cdc5b0d3450 100644 --- a/packages/cubejs-backend-native/package.json +++ b/packages/cubejs-backend-native/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/native", - "version": "1.6.67", + "version": "1.7.0", "author": "Cube Dev, Inc.", "description": "Native module for Cube.js (binding to Rust codebase)", "main": "dist/js/index.js", @@ -39,7 +39,7 @@ "dist/js" ], "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "@types/node": "^22", "cargo-cp-artifact": "^0.1.9", @@ -50,8 +50,8 @@ "uuid": "^8.3.2" }, "dependencies": { - "@cubejs-backend/cubesql": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/cubesql": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "@cubejs-infra/post-installer": "^0.0.7" }, "resources": { diff --git a/packages/cubejs-backend-shared/CHANGELOG.md b/packages/cubejs-backend-shared/CHANGELOG.md index c9671ca1d6d3b..3824dc84fb45a 100644 --- a/packages/cubejs-backend-shared/CHANGELOG.md +++ b/packages/cubejs-backend-shared/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) +- feat!: Remove deprecated CUBEJS_SCHEDULED_REFRESH_CONCURRENCY env variable (#11048) ([44fee72](https://github.com/cube-js/cube/commit/44fee72ac84f630427e4a2038797fec20b8d018c)), closes [#11048](https://github.com/cube-js/cube/issues/11048) +- feat!: remove deprecated Elasticsearch driver ([99c98ad](https://github.com/cube-js/cube/commit/99c98adb8f94d78b7add5f36c4f2dfc684876831)) + +### BREAKING CHANGES + +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. +- The CUBEJS_SCHEDULED_REFRESH_CONCURRENCY environment variable has been removed. It was deprecated in v1.2.7. Use CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID instead. +- The Elasticsearch driver has been removed. It was deprecated in v1.6.0. There is no drop-in replacement. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/shared diff --git a/packages/cubejs-backend-shared/package.json b/packages/cubejs-backend-shared/package.json index 7da083b96382e..ec3fade75dff3 100644 --- a/packages/cubejs-backend-shared/package.json +++ b/packages/cubejs-backend-shared/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/shared", - "version": "1.6.67", + "version": "1.7.0", "description": "Shared code for Cube.js backend packages", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -27,7 +27,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/bytes": "^3.1.5", "@types/cli-progress": "^3.9.1", "@types/decompress": "^4.2.7", diff --git a/packages/cubejs-base-driver/CHANGELOG.md b/packages/cubejs-base-driver/CHANGELOG.md index b1ccaeef5a092..810a6dc39cb76 100644 --- a/packages/cubejs-base-driver/CHANGELOG.md +++ b/packages/cubejs-base-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/base-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/base-driver diff --git a/packages/cubejs-base-driver/package.json b/packages/cubejs-base-driver/package.json index 77cfaaf07f0cf..404f14c001352 100644 --- a/packages/cubejs-base-driver/package.json +++ b/packages/cubejs-base-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/base-driver", "description": "Cube.js Base Driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -33,11 +33,11 @@ "@aws-sdk/s3-request-presigner": "^3.49.0", "@azure/identity": "^4.4.1", "@azure/storage-blob": "^12.9.0", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/shared": "1.7.0", "@google-cloud/storage": "^7.13.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "@types/node": "^22", "jest": "^29", diff --git a/packages/cubejs-bigquery-driver/CHANGELOG.md b/packages/cubejs-bigquery-driver/CHANGELOG.md index 299803f94fa58..37cf2d66b6f04 100644 --- a/packages/cubejs-bigquery-driver/CHANGELOG.md +++ b/packages/cubejs-bigquery-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/bigquery-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/bigquery-driver diff --git a/packages/cubejs-bigquery-driver/package.json b/packages/cubejs-bigquery-driver/package.json index 474416fce2704..9e6e8cbc0198a 100644 --- a/packages/cubejs-bigquery-driver/package.json +++ b/packages/cubejs-bigquery-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/bigquery-driver", "description": "Cube.js BigQuery database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,15 +29,15 @@ "main": "index.js", "types": "dist/src/index.d.ts", "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/shared": "1.7.0", "@google-cloud/bigquery": "^7.7.0", "@google-cloud/storage": "^7.13.0", "ramda": "^0.27.2" }, "devDependencies": { - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/testing-shared": "1.7.0", "@types/big.js": "^6.2.2", "@types/dedent": "^0.7.0", "@types/jest": "^29", diff --git a/packages/cubejs-cli/CHANGELOG.md b/packages/cubejs-cli/CHANGELOG.md index 6339f44c4ea51..da41465d3712f 100644 --- a/packages/cubejs-cli/CHANGELOG.md +++ b/packages/cubejs-cli/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package cubejs-cli + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package cubejs-cli diff --git a/packages/cubejs-cli/package.json b/packages/cubejs-cli/package.json index 6a8689730ea25..13434f969a110 100644 --- a/packages/cubejs-cli/package.json +++ b/packages/cubejs-cli/package.json @@ -2,7 +2,7 @@ "name": "cubejs-cli", "description": "Cube.js Command Line Interface", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -30,10 +30,10 @@ "LICENSE" ], "dependencies": { - "@cubejs-backend/cloud": "1.6.67", + "@cubejs-backend/cloud": "1.7.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "chalk": "^2.4.2", "cli-progress": "^3.10", "commander": "^2.19.0", @@ -50,8 +50,8 @@ "colors": "1.4.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/server": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/server": "1.7.0", "@oclif/command": "^1.8.0", "@types/cli-progress": "^3.8.0", "@types/cross-spawn": "^6.0.2", diff --git a/packages/cubejs-clickhouse-driver/CHANGELOG.md b/packages/cubejs-clickhouse-driver/CHANGELOG.md index 7fb93f4b352a9..2274f9c2b7fa7 100644 --- a/packages/cubejs-clickhouse-driver/CHANGELOG.md +++ b/packages/cubejs-clickhouse-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/clickhouse-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/clickhouse-driver diff --git a/packages/cubejs-clickhouse-driver/package.json b/packages/cubejs-clickhouse-driver/package.json index a3a398c0155dc..2773d815c2e1a 100644 --- a/packages/cubejs-clickhouse-driver/package.json +++ b/packages/cubejs-clickhouse-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/clickhouse-driver", "description": "Cube.js ClickHouse database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,16 +29,16 @@ }, "dependencies": { "@clickhouse/client": "^1.12.0", - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "moment": "^2.24.0", "sqlstring": "^2.3.1", "uuid": "^8.3.2" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "@types/jest": "^29", "jest": "^29", "typescript": "~5.2.2" diff --git a/packages/cubejs-client-core/CHANGELOG.md b/packages/cubejs-client-core/CHANGELOG.md index 693e3d58f890b..0f5c2897fb43b 100644 --- a/packages/cubejs-client-core/CHANGELOG.md +++ b/packages/cubejs-client-core/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) + +### BREAKING CHANGES + +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-client/core diff --git a/packages/cubejs-client-core/package.json b/packages/cubejs-client-core/package.json index 8efca806d0d7c..7c78f14395a23 100644 --- a/packages/cubejs-client-core/package.json +++ b/packages/cubejs-client-core/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/core", - "version": "1.6.67", + "version": "1.7.0", "engines": {}, "type": "module", "repository": { @@ -57,7 +57,7 @@ ], "license": "MIT", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/d3-format": "^3", "@types/d3-time-format": "^4", "@types/moment-range": "^4.0.0", diff --git a/packages/cubejs-client-dx/CHANGELOG.md b/packages/cubejs-client-dx/CHANGELOG.md index 57ff3dfd14403..6880fc5f0bef8 100644 --- a/packages/cubejs-client-dx/CHANGELOG.md +++ b/packages/cubejs-client-dx/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) + +### BREAKING CHANGES + +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-client/dx diff --git a/packages/cubejs-client-dx/package.json b/packages/cubejs-client-dx/package.json index aa9fc684eb726..16cf3fc43d0ec 100644 --- a/packages/cubejs-client-dx/package.json +++ b/packages/cubejs-client-dx/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/dx", - "version": "1.6.67", + "version": "1.7.0", "engines": {}, "repository": { "type": "git", diff --git a/packages/cubejs-client-ngx/CHANGELOG.md b/packages/cubejs-client-ngx/CHANGELOG.md index 6f0bde9b356fc..61153c70c6f22 100644 --- a/packages/cubejs-client-ngx/CHANGELOG.md +++ b/packages/cubejs-client-ngx/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-client/ngx + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-client/ngx diff --git a/packages/cubejs-client-ngx/package.json b/packages/cubejs-client-ngx/package.json index 4998b56ac0537..030540ed66a23 100644 --- a/packages/cubejs-client-ngx/package.json +++ b/packages/cubejs-client-ngx/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/ngx", - "version": "1.6.67", + "version": "1.7.0", "author": "Cube Dev, Inc.", "engines": {}, "repository": { diff --git a/packages/cubejs-client-react/CHANGELOG.md b/packages/cubejs-client-react/CHANGELOG.md index 1cbc893b0f376..fadd8ad907adb 100644 --- a/packages/cubejs-client-react/CHANGELOG.md +++ b/packages/cubejs-client-react/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-client/react + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-client/react diff --git a/packages/cubejs-client-react/package.json b/packages/cubejs-client-react/package.json index 73c61407796c3..2f8e402654bbd 100644 --- a/packages/cubejs-client-react/package.json +++ b/packages/cubejs-client-react/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/react", - "version": "1.6.67", + "version": "1.7.0", "author": "Cube Dev, Inc.", "license": "MIT", "engines": {}, @@ -24,7 +24,7 @@ ], "dependencies": { "@babel/runtime": "^7.1.2", - "@cubejs-client/core": "1.6.67", + "@cubejs-client/core": "1.7.0", "core-js": "^3.6.5", "ramda": "^0.27.2" }, diff --git a/packages/cubejs-client-vue3/CHANGELOG.md b/packages/cubejs-client-vue3/CHANGELOG.md index 57fd8a42733e8..3a487cbb92686 100644 --- a/packages/cubejs-client-vue3/CHANGELOG.md +++ b/packages/cubejs-client-vue3/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) + +### BREAKING CHANGES + +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-client/vue3 diff --git a/packages/cubejs-client-vue3/package.json b/packages/cubejs-client-vue3/package.json index 85def322da52b..45074373d73bf 100644 --- a/packages/cubejs-client-vue3/package.json +++ b/packages/cubejs-client-vue3/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/vue3", - "version": "1.6.67", + "version": "1.7.0", "engines": {}, "repository": { "type": "git", @@ -27,7 +27,7 @@ "src" ], "dependencies": { - "@cubejs-client/core": "1.6.67", + "@cubejs-client/core": "1.7.0", "ramda": "^0.27.0" }, "devDependencies": { diff --git a/packages/cubejs-client-ws-transport/CHANGELOG.md b/packages/cubejs-client-ws-transport/CHANGELOG.md index 605251b3db16d..39ed751f53ae6 100644 --- a/packages/cubejs-client-ws-transport/CHANGELOG.md +++ b/packages/cubejs-client-ws-transport/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-client/ws-transport + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-client/ws-transport diff --git a/packages/cubejs-client-ws-transport/package.json b/packages/cubejs-client-ws-transport/package.json index ededfddaacb64..57a9db72c18ac 100644 --- a/packages/cubejs-client-ws-transport/package.json +++ b/packages/cubejs-client-ws-transport/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/ws-transport", - "version": "1.6.67", + "version": "1.7.0", "engines": {}, "repository": { "type": "git", @@ -20,7 +20,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@cubejs-client/core": "1.6.67", + "@cubejs-client/core": "1.7.0", "core-js": "^3.6.5", "isomorphic-ws": "^4.0.1", "ws": "^7.3.1" @@ -33,7 +33,7 @@ "@babel/core": "^7.3.3", "@babel/preset-env": "^7.3.1", "@babel/preset-typescript": "^7.12.1", - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/ws": "^7.2.9", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-crate-driver/CHANGELOG.md b/packages/cubejs-crate-driver/CHANGELOG.md index e4a17f8eb6b61..fc42e5e1c45e2 100644 --- a/packages/cubejs-crate-driver/CHANGELOG.md +++ b/packages/cubejs-crate-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/crate-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/crate-driver diff --git a/packages/cubejs-crate-driver/package.json b/packages/cubejs-crate-driver/package.json index f8de956931abf..131508e7142db 100644 --- a/packages/cubejs-crate-driver/package.json +++ b/packages/cubejs-crate-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/crate-driver", "description": "Cube.js Crate database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,13 +28,13 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/postgres-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67" + "@cubejs-backend/postgres-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "testcontainers": "^10.28.0", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-cubestore-driver/CHANGELOG.md b/packages/cubejs-cubestore-driver/CHANGELOG.md index 8d50c40a384cb..ccd6c6fafba2e 100644 --- a/packages/cubejs-cubestore-driver/CHANGELOG.md +++ b/packages/cubejs-cubestore-driver/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +### Features + +- **cubeorchestrator:** Use Arrow format for CubeStore response format ([78ddac2](https://github.com/cube-js/cube/commit/78ddac22db3258f2f2cf60bb772ae90aa1cb0282)), closes [#1705](https://github.com/cube-js/cube/issues/1705) + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/cubestore-driver diff --git a/packages/cubejs-cubestore-driver/package.json b/packages/cubejs-cubestore-driver/package.json index e6df043947703..1979c1c2bc8ba 100644 --- a/packages/cubejs-cubestore-driver/package.json +++ b/packages/cubejs-cubestore-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/cubestore-driver", "description": "Cube Store driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -26,10 +26,10 @@ "lint:fix": "eslint --fix src/*.ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/cubestore": "1.6.67", - "@cubejs-backend/native": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/cubestore": "1.7.0", + "@cubejs-backend/native": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "csv-write-stream": "^2.0.0", "flatbuffers": "25.9.23", "fs-extra": "^9.1.0", @@ -40,7 +40,7 @@ "ws": "^7.4.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/csv-write-stream": "^2.0.0", "@types/jest": "^29", "@types/node": "^22", diff --git a/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md b/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md index 118f32a9338f8..285d95d8969c2 100644 --- a/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md +++ b/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver diff --git a/packages/cubejs-databricks-jdbc-driver/package.json b/packages/cubejs-databricks-jdbc-driver/package.json index 2d05b82282698..4f6b4617bf9c4 100644 --- a/packages/cubejs-databricks-jdbc-driver/package.json +++ b/packages/cubejs-databricks-jdbc-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/databricks-jdbc-driver", "description": "Cube.js Databricks database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "license": "Apache-2.0", "repository": { "type": "git", @@ -30,17 +30,17 @@ "bin" ], "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/jdbc-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/jdbc-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "node-fetch": "^2.6.1", "ramda": "^0.27.2", "source-map-support": "^0.5.19", "uuid": "^8.3.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "@types/node": "^22", "@types/ramda": "^0.27.34", diff --git a/packages/cubejs-dbt-schema-extension/CHANGELOG.md b/packages/cubejs-dbt-schema-extension/CHANGELOG.md index c3e035fcd0a6c..c129f12221409 100644 --- a/packages/cubejs-dbt-schema-extension/CHANGELOG.md +++ b/packages/cubejs-dbt-schema-extension/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/dbt-schema-extension + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/dbt-schema-extension diff --git a/packages/cubejs-dbt-schema-extension/package.json b/packages/cubejs-dbt-schema-extension/package.json index 6b77eddce31f2..2529878e89727 100644 --- a/packages/cubejs-dbt-schema-extension/package.json +++ b/packages/cubejs-dbt-schema-extension/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/dbt-schema-extension", "description": "Cube.js dbt Schema Extension", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,14 +25,14 @@ "lint:fix": "eslint --fix src/* --ext .ts,.js" }, "dependencies": { - "@cubejs-backend/schema-compiler": "1.6.67", + "@cubejs-backend/schema-compiler": "1.7.0", "fs-extra": "^9.1.0", "inflection": "^1.12.0", "node-fetch": "^2.6.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing": "1.7.0", "@types/jest": "^29", "jest": "^29", "stream-to-array": "^2.3.0", diff --git a/packages/cubejs-docker/CHANGELOG.md b/packages/cubejs-docker/CHANGELOG.md index 962678e85b053..57a667f1ace9f 100644 --- a/packages/cubejs-docker/CHANGELOG.md +++ b/packages/cubejs-docker/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(docker)!: Upgrade OpenJDK from 17 to 21 ([9d00c83](https://github.com/cube-js/cube/commit/9d00c83b4af7f749dfb5329d93fe8b2f165edcda)) +- feat(docker)!: Upgrade Python from 3.11 to 3.13 ([f3875ec](https://github.com/cube-js/cube/commit/f3875ec1826dcae4c489c68a6e3b7a2f06569200)) +- feat!: remove deprecated Elasticsearch driver ([99c98ad](https://github.com/cube-js/cube/commit/99c98adb8f94d78b7add5f36c4f2dfc684876831)) + +### Features + +- **docker:** Upgrade Debian to Trixie ([45b2967](https://github.com/cube-js/cube/commit/45b2967499c5323d6164ab3915c2ede69185e55a)) +- **docker:** Upgrade Node.js to v24 (24.18.0) ([93ff587](https://github.com/cube-js/cube/commit/93ff587457dba70801d84051b5c26efc44dfbd96)) + +### BREAKING CHANGES + +- The -jdk image now runs Java 21. JDBC drivers and custom JARs + must be compatible with OpenJDK 21. +- Users who install custom Python packages into the Cube image + (e.g. for Python/Jinja data models) must target Python 3.13. Packages built for + 3.11 will not load. +- The Elasticsearch driver has been removed. It was deprecated in v1.6.0. There is no drop-in replacement. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/docker diff --git a/packages/cubejs-docker/package.json b/packages/cubejs-docker/package.json index cc2652db468df..176b0c982a066 100644 --- a/packages/cubejs-docker/package.json +++ b/packages/cubejs-docker/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/docker", - "version": "1.6.67", + "version": "1.7.0", "description": "Cube.js In Docker (virtual package)", "author": "Cube Dev, Inc.", "license": "Apache-2.0", @@ -9,34 +9,34 @@ "node": ">=20.0.0" }, "dependencies": { - "@cubejs-backend/athena-driver": "1.6.67", - "@cubejs-backend/bigquery-driver": "1.6.67", - "@cubejs-backend/clickhouse-driver": "1.6.67", - "@cubejs-backend/crate-driver": "1.6.67", - "@cubejs-backend/databricks-jdbc-driver": "1.6.67", - "@cubejs-backend/dbt-schema-extension": "1.6.67", - "@cubejs-backend/dremio-driver": "1.6.67", - "@cubejs-backend/druid-driver": "1.6.67", - "@cubejs-backend/duckdb-driver": "1.6.67", - "@cubejs-backend/firebolt-driver": "1.6.67", - "@cubejs-backend/hive-driver": "1.6.67", - "@cubejs-backend/ksql-driver": "1.6.67", - "@cubejs-backend/materialize-driver": "1.6.67", - "@cubejs-backend/mongobi-driver": "1.6.67", - "@cubejs-backend/mssql-driver": "1.6.67", - "@cubejs-backend/mysql-driver": "1.6.67", - "@cubejs-backend/oracle-driver": "1.6.67", - "@cubejs-backend/pinot-driver": "1.6.67", - "@cubejs-backend/postgres-driver": "1.6.67", - "@cubejs-backend/prestodb-driver": "1.6.67", - "@cubejs-backend/questdb-driver": "1.6.67", - "@cubejs-backend/redshift-driver": "1.6.67", - "@cubejs-backend/server": "1.6.67", - "@cubejs-backend/snowflake-driver": "1.6.67", - "@cubejs-backend/sqlite-driver": "1.6.67", - "@cubejs-backend/trino-driver": "1.6.67", - "@cubejs-backend/vertica-driver": "1.6.67", - "cubejs-cli": "1.6.67", + "@cubejs-backend/athena-driver": "1.7.0", + "@cubejs-backend/bigquery-driver": "1.7.0", + "@cubejs-backend/clickhouse-driver": "1.7.0", + "@cubejs-backend/crate-driver": "1.7.0", + "@cubejs-backend/databricks-jdbc-driver": "1.7.0", + "@cubejs-backend/dbt-schema-extension": "1.7.0", + "@cubejs-backend/dremio-driver": "1.7.0", + "@cubejs-backend/druid-driver": "1.7.0", + "@cubejs-backend/duckdb-driver": "1.7.0", + "@cubejs-backend/firebolt-driver": "1.7.0", + "@cubejs-backend/hive-driver": "1.7.0", + "@cubejs-backend/ksql-driver": "1.7.0", + "@cubejs-backend/materialize-driver": "1.7.0", + "@cubejs-backend/mongobi-driver": "1.7.0", + "@cubejs-backend/mssql-driver": "1.7.0", + "@cubejs-backend/mysql-driver": "1.7.0", + "@cubejs-backend/oracle-driver": "1.7.0", + "@cubejs-backend/pinot-driver": "1.7.0", + "@cubejs-backend/postgres-driver": "1.7.0", + "@cubejs-backend/prestodb-driver": "1.7.0", + "@cubejs-backend/questdb-driver": "1.7.0", + "@cubejs-backend/redshift-driver": "1.7.0", + "@cubejs-backend/server": "1.7.0", + "@cubejs-backend/snowflake-driver": "1.7.0", + "@cubejs-backend/sqlite-driver": "1.7.0", + "@cubejs-backend/trino-driver": "1.7.0", + "@cubejs-backend/vertica-driver": "1.7.0", + "cubejs-cli": "1.7.0", "typescript": "~5.2.2" }, "resolutions": { diff --git a/packages/cubejs-dremio-driver/CHANGELOG.md b/packages/cubejs-dremio-driver/CHANGELOG.md index a2dd07dfc22af..7a6a5be4ea68c 100644 --- a/packages/cubejs-dremio-driver/CHANGELOG.md +++ b/packages/cubejs-dremio-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/dremio-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/dremio-driver diff --git a/packages/cubejs-dremio-driver/package.json b/packages/cubejs-dremio-driver/package.json index a7454df2a942b..1040f3d00096f 100644 --- a/packages/cubejs-dremio-driver/package.json +++ b/packages/cubejs-dremio-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/dremio-driver", "description": "Cube.js Dremio driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -22,15 +22,15 @@ "lint:fix": "eslint driver/*.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "axios": "^1.8.3", "sqlstring": "^2.3.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "jest": "^29" }, "license": "Apache-2.0", diff --git a/packages/cubejs-druid-driver/CHANGELOG.md b/packages/cubejs-druid-driver/CHANGELOG.md index 6f41173b729b8..c89d71964a729 100644 --- a/packages/cubejs-druid-driver/CHANGELOG.md +++ b/packages/cubejs-druid-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/druid-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/druid-driver diff --git a/packages/cubejs-druid-driver/package.json b/packages/cubejs-druid-driver/package.json index 413c1bda9e0a8..a4e95fcd2beff 100644 --- a/packages/cubejs-druid-driver/package.json +++ b/packages/cubejs-druid-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/druid-driver", "description": "Cube.js Druid database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "license": "Apache-2.0", "repository": { "type": "git", @@ -28,13 +28,13 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "axios": "^1.8.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "@types/node": "^22", "jest": "^29", diff --git a/packages/cubejs-duckdb-driver/CHANGELOG.md b/packages/cubejs-duckdb-driver/CHANGELOG.md index 3a7c4896c864e..82535167e4090 100644 --- a/packages/cubejs-duckdb-driver/CHANGELOG.md +++ b/packages/cubejs-duckdb-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/duckdb-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/duckdb-driver diff --git a/packages/cubejs-duckdb-driver/package.json b/packages/cubejs-duckdb-driver/package.json index 6699865da2649..c0cbf791f2e31 100644 --- a/packages/cubejs-duckdb-driver/package.json +++ b/packages/cubejs-duckdb-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/duckdb-driver", "description": "Cube DuckDB database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,15 +27,15 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "duckdb": "^1.4.1" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "@types/jest": "^29", "@types/node": "^22", "jest": "^29", diff --git a/packages/cubejs-firebolt-driver/CHANGELOG.md b/packages/cubejs-firebolt-driver/CHANGELOG.md index 8c47a18b9a051..6ae7247eb4a28 100644 --- a/packages/cubejs-firebolt-driver/CHANGELOG.md +++ b/packages/cubejs-firebolt-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/firebolt-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/firebolt-driver diff --git a/packages/cubejs-firebolt-driver/package.json b/packages/cubejs-firebolt-driver/package.json index 561f7144e5fa4..4306943b0816e 100644 --- a/packages/cubejs-firebolt-driver/package.json +++ b/packages/cubejs-firebolt-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/firebolt-driver", "description": "Cube.js Firebolt database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,15 +28,15 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "firebolt-sdk": "1.10.0" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-hive-driver/CHANGELOG.md b/packages/cubejs-hive-driver/CHANGELOG.md index 342084e52d8f3..eb81e44f4c915 100644 --- a/packages/cubejs-hive-driver/CHANGELOG.md +++ b/packages/cubejs-hive-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/hive-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/hive-driver diff --git a/packages/cubejs-hive-driver/package.json b/packages/cubejs-hive-driver/package.json index 82419c8af6002..f3f113548b11d 100644 --- a/packages/cubejs-hive-driver/package.json +++ b/packages/cubejs-hive-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/hive-driver", "description": "Cube.js Hive database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -17,8 +17,8 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "jshs2": "^0.4.4", "sasl-plain": "^0.1.0", "saslmechanisms": "^0.1.1", @@ -27,7 +27,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67" + "@cubejs-backend/linter": "1.7.0" }, "publishConfig": { "access": "public" diff --git a/packages/cubejs-jdbc-driver/CHANGELOG.md b/packages/cubejs-jdbc-driver/CHANGELOG.md index 2567bc4570cce..cba8c3615b3c5 100644 --- a/packages/cubejs-jdbc-driver/CHANGELOG.md +++ b/packages/cubejs-jdbc-driver/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +### Features + +- **docker:** Upgrade Node.js to v24 (24.18.0) ([93ff587](https://github.com/cube-js/cube/commit/93ff587457dba70801d84051b5c26efc44dfbd96)) + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/jdbc-driver diff --git a/packages/cubejs-jdbc-driver/package.json b/packages/cubejs-jdbc-driver/package.json index 52cec821bda25..5dba4b1bce0c8 100644 --- a/packages/cubejs-jdbc-driver/package.json +++ b/packages/cubejs-jdbc-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/jdbc-driver", "description": "Cube.js JDBC database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,9 +25,9 @@ "index.js" ], "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", "@cubejs-backend/node-java-maven": "^0.1.3", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/shared": "1.7.0", "sqlstring": "^2.3.0" }, "optionalDependencies": { @@ -42,7 +42,7 @@ "testEnvironment": "node" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/node": "^22", "@types/sqlstring": "^2.3.0", "typescript": "~5.2.2" diff --git a/packages/cubejs-ksql-driver/CHANGELOG.md b/packages/cubejs-ksql-driver/CHANGELOG.md index 6353f0fe264c5..efc3eb3ce4acb 100644 --- a/packages/cubejs-ksql-driver/CHANGELOG.md +++ b/packages/cubejs-ksql-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/ksql-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/ksql-driver diff --git a/packages/cubejs-ksql-driver/package.json b/packages/cubejs-ksql-driver/package.json index d9b6bd0f7e714..5a743bf5b29a4 100644 --- a/packages/cubejs-ksql-driver/package.json +++ b/packages/cubejs-ksql-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/ksql-driver", "description": "Cube.js ksql database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,9 +25,9 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "async-mutex": "0.3.2", "axios": "^1.8.3", "kafkajs": "^2.2.3", @@ -41,7 +41,7 @@ "extends": "../cubejs-linter" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-linter/CHANGELOG.md b/packages/cubejs-linter/CHANGELOG.md index cc82430173bfa..26985c244e9ea 100644 --- a/packages/cubejs-linter/CHANGELOG.md +++ b/packages/cubejs-linter/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/linter + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/linter diff --git a/packages/cubejs-linter/package.json b/packages/cubejs-linter/package.json index 47c5c58b4b220..a5dd6dae6facc 100644 --- a/packages/cubejs-linter/package.json +++ b/packages/cubejs-linter/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/linter", "description": "Cube.js ESLint (virtual package) for linting code", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", diff --git a/packages/cubejs-materialize-driver/CHANGELOG.md b/packages/cubejs-materialize-driver/CHANGELOG.md index 328e455312e58..34c53d75a37c4 100644 --- a/packages/cubejs-materialize-driver/CHANGELOG.md +++ b/packages/cubejs-materialize-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/materialize-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/materialize-driver diff --git a/packages/cubejs-materialize-driver/package.json b/packages/cubejs-materialize-driver/package.json index b2cb98cabb7a1..6aa90e3b0e7ce 100644 --- a/packages/cubejs-materialize-driver/package.json +++ b/packages/cubejs-materialize-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/materialize-driver", "description": "Cube.js Materialize database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,15 +27,15 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/postgres-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/postgres-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "semver": "^7.6.3" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing": "1.7.0", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-mongobi-driver/CHANGELOG.md b/packages/cubejs-mongobi-driver/CHANGELOG.md index f65cc906dbfe8..aa8632cab0f10 100644 --- a/packages/cubejs-mongobi-driver/CHANGELOG.md +++ b/packages/cubejs-mongobi-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/mongobi-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/mongobi-driver diff --git a/packages/cubejs-mongobi-driver/package.json b/packages/cubejs-mongobi-driver/package.json index 41eaac04cd64f..a63352895e665 100644 --- a/packages/cubejs-mongobi-driver/package.json +++ b/packages/cubejs-mongobi-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/mongobi-driver", "description": "Cube.js MongoBI driver", "author": "krunalsabnis@gmail.com", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,8 +27,8 @@ "integration:mongobi": "jest dist/test" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "@types/node": "^22", "moment": "^2.29.1", "mysql2": "^3.11.5" @@ -38,7 +38,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "testcontainers": "^10.28.0", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-mssql-driver/CHANGELOG.md b/packages/cubejs-mssql-driver/CHANGELOG.md index 3c23e7b4e65b1..916e0809f7f1b 100644 --- a/packages/cubejs-mssql-driver/CHANGELOG.md +++ b/packages/cubejs-mssql-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/mssql-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/mssql-driver diff --git a/packages/cubejs-mssql-driver/package.json b/packages/cubejs-mssql-driver/package.json index 27c9715d769b9..c14638fa0af85 100644 --- a/packages/cubejs-mssql-driver/package.json +++ b/packages/cubejs-mssql-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/mssql-driver", "description": "Cube.js MS SQL database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,8 +25,8 @@ "lint:fix": "eslint --fix src/* --ext .ts,.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "mssql": "^11.0.1" }, "devDependencies": { diff --git a/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md b/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md index 3bb53f0afb959..a5fc71f15fbec 100644 --- a/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md +++ b/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver diff --git a/packages/cubejs-mysql-aurora-serverless-driver/package.json b/packages/cubejs-mysql-aurora-serverless-driver/package.json index 7bbf7daa02715..c65c09e0d53d2 100644 --- a/packages/cubejs-mysql-aurora-serverless-driver/package.json +++ b/packages/cubejs-mysql-aurora-serverless-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/mysql-aurora-serverless-driver", "description": "Cube.js Aurora Serverless Mysql database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -21,14 +21,14 @@ "lint": "eslint driver/*.js test/*.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "@types/mysql": "^2.15.15", "aws-sdk": "^2.787.0", "data-api-client": "^1.1.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/data-api-client": "^1.2.1", "@types/jest": "^29", "jest": "^29", diff --git a/packages/cubejs-mysql-driver/CHANGELOG.md b/packages/cubejs-mysql-driver/CHANGELOG.md index 89307e7ce75e7..74e02b15e2e94 100644 --- a/packages/cubejs-mysql-driver/CHANGELOG.md +++ b/packages/cubejs-mysql-driver/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +### Bug Fixes + +- **mysql-driver:** Use string for decimal values ([4f2d3b9](https://github.com/cube-js/cube/commit/4f2d3b9416834ab87dbf84b24bed1e132bf2e512)) + +### Features + +- **mysql-driver:** Migrate driver to mysql2 library, thanks [@nathanfallet](https://github.com/nathanfallet) ([553b7ef](https://github.com/cube-js/cube/commit/553b7ef98f1fdf050013aaa81ab629bcc3bbeddc)) + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/mysql-driver diff --git a/packages/cubejs-mysql-driver/package.json b/packages/cubejs-mysql-driver/package.json index f4bba2e39c26c..57857b130266d 100644 --- a/packages/cubejs-mysql-driver/package.json +++ b/packages/cubejs-mysql-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/mysql-driver", "description": "Cube.js Mysql database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,13 +27,13 @@ "lint:fix": "eslint --fix src/* test/* --ext .ts,.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "mysql2": "^3.16.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "@types/jest": "^29", "jest": "^29", "stream-to-array": "^2.3.0", diff --git a/packages/cubejs-oracle-driver/CHANGELOG.md b/packages/cubejs-oracle-driver/CHANGELOG.md index 8f5e5cc0f709e..a7c38d0f63c03 100644 --- a/packages/cubejs-oracle-driver/CHANGELOG.md +++ b/packages/cubejs-oracle-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/oracle-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/oracle-driver diff --git a/packages/cubejs-oracle-driver/package.json b/packages/cubejs-oracle-driver/package.json index 8ef5e77780031..f21d4c1a90309 100644 --- a/packages/cubejs-oracle-driver/package.json +++ b/packages/cubejs-oracle-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/oracle-driver", "description": "Cube.js oracle database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -13,8 +13,8 @@ }, "main": "driver/OracleDriver.js", "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "ramda": "^0.27.0" }, "devDependencies": { diff --git a/packages/cubejs-pinot-driver/CHANGELOG.md b/packages/cubejs-pinot-driver/CHANGELOG.md index 78e2660d92199..a451284212823 100644 --- a/packages/cubejs-pinot-driver/CHANGELOG.md +++ b/packages/cubejs-pinot-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/pinot-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/pinot-driver diff --git a/packages/cubejs-pinot-driver/package.json b/packages/cubejs-pinot-driver/package.json index 2fca7479be2cd..75795b26d0737 100644 --- a/packages/cubejs-pinot-driver/package.json +++ b/packages/cubejs-pinot-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/pinot-driver", "description": "Cube.js Pinot database driver", "author": "Julian Ronsse, InTheMemory, Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,9 +27,9 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "node-fetch": "^2.6.1", "ramda": "^0.27.2", "sqlstring": "^2.3.3" @@ -39,7 +39,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "jest": "^29", "should": "^13.2.3", diff --git a/packages/cubejs-playground/CHANGELOG.md b/packages/cubejs-playground/CHANGELOG.md index a043536df3769..2e14de87d0f3d 100644 --- a/packages/cubejs-playground/CHANGELOG.md +++ b/packages/cubejs-playground/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) + +### BREAKING CHANGES + +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-client/playground diff --git a/packages/cubejs-playground/package.json b/packages/cubejs-playground/package.json index d2e4a92324c92..f5f96babe6edc 100644 --- a/packages/cubejs-playground/package.json +++ b/packages/cubejs-playground/package.json @@ -1,7 +1,7 @@ { "name": "@cubejs-client/playground", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "engines": {}, "repository": { "type": "git", @@ -68,8 +68,8 @@ "@ant-design/compatible": "^1.0.1", "@ant-design/icons": "^5.3.5", "@cube-dev/ui-kit": "0.52.3", - "@cubejs-client/core": "1.6.67", - "@cubejs-client/react": "1.6.67", + "@cubejs-client/core": "1.7.0", + "@cubejs-client/react": "1.7.0", "@types/flexsearch": "^0.7.3", "@types/node": "^22", "@types/react": "^18.3.4", diff --git a/packages/cubejs-postgres-driver/CHANGELOG.md b/packages/cubejs-postgres-driver/CHANGELOG.md index 0335b0a5df693..ed7e5d0179e02 100644 --- a/packages/cubejs-postgres-driver/CHANGELOG.md +++ b/packages/cubejs-postgres-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/postgres-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/postgres-driver diff --git a/packages/cubejs-postgres-driver/package.json b/packages/cubejs-postgres-driver/package.json index 3a0f761b8c52c..ac680af594393 100644 --- a/packages/cubejs-postgres-driver/package.json +++ b/packages/cubejs-postgres-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/postgres-driver", "description": "Cube.js Postgres database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,8 +27,8 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "@types/pg": "^8.16.0", "@types/pg-query-stream": "^1.0.3", "pg": "^8.18.0", @@ -36,8 +36,8 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "testcontainers": "^10.28.0", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-prestodb-driver/CHANGELOG.md b/packages/cubejs-prestodb-driver/CHANGELOG.md index bd1362367300f..16ef3b11702fb 100644 --- a/packages/cubejs-prestodb-driver/CHANGELOG.md +++ b/packages/cubejs-prestodb-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/prestodb-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/prestodb-driver diff --git a/packages/cubejs-prestodb-driver/package.json b/packages/cubejs-prestodb-driver/package.json index 29a92ed13bf5b..077fd5132d5fd 100644 --- a/packages/cubejs-prestodb-driver/package.json +++ b/packages/cubejs-prestodb-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/prestodb-driver", "description": "Cube.js Presto database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,8 +28,8 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "presto-client": "1.2.0", "ramda": "^0.27.0", "sqlstring": "^2.3.1" @@ -39,7 +39,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "jest": "^29", "should": "^13.2.3", diff --git a/packages/cubejs-query-orchestrator/CHANGELOG.md b/packages/cubejs-query-orchestrator/CHANGELOG.md index b3e5cc90d2119..c603834e6a16d 100644 --- a/packages/cubejs-query-orchestrator/CHANGELOG.md +++ b/packages/cubejs-query-orchestrator/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(query-orchestrator)!: Increase default continueWaitTimeout from 5s to 10s ([4625173](https://github.com/cube-js/cube/commit/462517392432a2e5c244af73c305fbb2bc543f4f)) +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) + +### BREAKING CHANGES + +- The default `continueWaitTimeout` changes from 5 to 10 + seconds. Deployments relying on the previous 5s default will now wait up + to 10s before returning `Continue wait`. Set `continueWaitTimeout: 5` + explicitly in orchestratorOptions/queueOptions to keep the old behavior. +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/query-orchestrator diff --git a/packages/cubejs-query-orchestrator/package.json b/packages/cubejs-query-orchestrator/package.json index a6689762ba4ad..9eab2ee685ea7 100644 --- a/packages/cubejs-query-orchestrator/package.json +++ b/packages/cubejs-query-orchestrator/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/query-orchestrator", "description": "Cube.js Query Orchestrator and Cache", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,15 +29,15 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/cubestore-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/cubestore-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "csv-write-stream": "^2.0.0", "lru-cache": "^11.1.0", "ramda": "^0.27.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "@types/node": "^22", "@types/ramda": "^0.27.32", diff --git a/packages/cubejs-questdb-driver/CHANGELOG.md b/packages/cubejs-questdb-driver/CHANGELOG.md index 2efca57ba7561..8fa271d4d37c2 100644 --- a/packages/cubejs-questdb-driver/CHANGELOG.md +++ b/packages/cubejs-questdb-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/questdb-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/questdb-driver diff --git a/packages/cubejs-questdb-driver/package.json b/packages/cubejs-questdb-driver/package.json index aa68523644818..3eb3f71755c9c 100644 --- a/packages/cubejs-questdb-driver/package.json +++ b/packages/cubejs-questdb-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/questdb-driver", "description": "Cube.js QuestDB database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,9 +27,9 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "@types/pg": "^8.6.0", "moment": "^2.24.0", "pg": "^8.7.0", @@ -37,8 +37,8 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "testcontainers": "^10.28.0", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-redshift-driver/CHANGELOG.md b/packages/cubejs-redshift-driver/CHANGELOG.md index 3b4b673065bbb..8f959e812ad85 100644 --- a/packages/cubejs-redshift-driver/CHANGELOG.md +++ b/packages/cubejs-redshift-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/redshift-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/redshift-driver diff --git a/packages/cubejs-redshift-driver/package.json b/packages/cubejs-redshift-driver/package.json index 2d8d32b4e779f..eaa4d16228886 100644 --- a/packages/cubejs-redshift-driver/package.json +++ b/packages/cubejs-redshift-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/redshift-driver", "description": "Cube.js Redshift database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,13 +27,13 @@ "dependencies": { "@aws-sdk/client-redshift": "^3.22.0", "@aws-sdk/credential-providers": "^3.22.0", - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/postgres-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67" + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/postgres-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-schema-compiler/CHANGELOG.md b/packages/cubejs-schema-compiler/CHANGELOG.md index 06d01ab35d8f4..1113324e94525 100644 --- a/packages/cubejs-schema-compiler/CHANGELOG.md +++ b/packages/cubejs-schema-compiler/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat!: Remove deprecated context_to_roles configuration option (#11055) ([41d42d6](https://github.com/cube-js/cube/commit/41d42d669486e763ad984fda5e64e33438baa5a4)), closes [#11055](https://github.com/cube-js/cube/issues/11055) +- feat(api-gateway)!: Remove deprecated renewQuery parameter (#11050) ([c2b8888](https://github.com/cube-js/cube/commit/c2b888885d6640c5a14ee49f1057fefdf703ead3)), closes [#11050](https://github.com/cube-js/cube/issues/11050) +- feat(schema-compiler)!: Remove deprecated running_total measure type (#11044) ([f45ea45](https://github.com/cube-js/cube/commit/f45ea456e4c3bfdc3663f8c992c911fdc9ed3730)), closes [#11044](https://github.com/cube-js/cube/issues/11044) +- feat!: remove deprecated Elasticsearch driver ([99c98ad](https://github.com/cube-js/cube/commit/99c98adb8f94d78b7add5f36c4f2dfc684876831)) + +### BREAKING CHANGES + +- The context_to_roles (contextToRoles) configuration option has been removed. It was deprecated in v1.6.4. Use context_to_groups (contextToGroups) instead. +- The `renewQuery` parameter of the `/v1/load` REST endpoint and the GraphQL `cube` query has been removed. Use the `cache` parameter instead: `cache: 'must-revalidate'` replaces `renewQuery: true`, and the default `stale-if-slow` replaces `renewQuery: false`. +- The running_total measure type has been removed. Data models that use `type: running_total` will now fail validation. Replace them with a rolling_window measure using an unbounded trailing window. +- The Elasticsearch driver has been removed. It was deprecated in v1.6.0. There is no drop-in replacement. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) ### Bug Fixes diff --git a/packages/cubejs-schema-compiler/package.json b/packages/cubejs-schema-compiler/package.json index 41e5fd2b4a9ce..bb36bdb30ae91 100644 --- a/packages/cubejs-schema-compiler/package.json +++ b/packages/cubejs-schema-compiler/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/schema-compiler", "description": "Cube schema compiler", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -40,8 +40,8 @@ "@babel/standalone": "^7.24", "@babel/traverse": "^7.24", "@babel/types": "^7.24", - "@cubejs-backend/native": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/native": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "antlr4": "^4.13.2", "camelcase": "^6.2.0", "cron-parser": "^4.9.0", @@ -60,9 +60,9 @@ }, "devDependencies": { "@clickhouse/client": "^1.12.0", - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/mssql-driver": "1.6.67", - "@cubejs-backend/query-orchestrator": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/mssql-driver": "1.7.0", + "@cubejs-backend/query-orchestrator": "1.7.0", "@types/babel__code-frame": "^7.0.6", "@types/babel__generator": "^7.6.8", "@types/babel__traverse": "^7.20.5", diff --git a/packages/cubejs-server-core/CHANGELOG.md b/packages/cubejs-server-core/CHANGELOG.md index 66e37669b5e12..796d7df81daef 100644 --- a/packages/cubejs-server-core/CHANGELOG.md +++ b/packages/cubejs-server-core/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(query-orchestrator)!: Increase default continueWaitTimeout from 5s to 10s ([4625173](https://github.com/cube-js/cube/commit/462517392432a2e5c244af73c305fbb2bc543f4f)) +- feat(server-core)!: Remove deprecated dbType option (#11045) ([08a2a6b](https://github.com/cube-js/cube/commit/08a2a6b37efb450377383fbb0e5041fff106cff2)), closes [#11045](https://github.com/cube-js/cube/issues/11045) +- feat!: Remove deprecated context_to_roles configuration option (#11055) ([41d42d6](https://github.com/cube-js/cube/commit/41d42d669486e763ad984fda5e64e33438baa5a4)), closes [#11055](https://github.com/cube-js/cube/issues/11055) +- feat!: remove deprecated Elasticsearch driver ([99c98ad](https://github.com/cube-js/cube/commit/99c98adb8f94d78b7add5f36c4f2dfc684876831)) + +### BREAKING CHANGES + +- The default `continueWaitTimeout` changes from 5 to 10 + seconds. Deployments relying on the previous 5s default will now wait up + to 10s before returning `Continue wait`. Set `continueWaitTimeout: 5` + explicitly in orchestratorOptions/queueOptions to keep the old behavior. +- CreateOptions.dbType has been removed. Use driverFactory instead. +- The context_to_roles (contextToRoles) configuration option has been removed. It was deprecated in v1.6.4. Use context_to_groups (contextToGroups) instead. +- The Elasticsearch driver has been removed. It was deprecated in v1.6.0. There is no drop-in replacement. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/server-core diff --git a/packages/cubejs-server-core/package.json b/packages/cubejs-server-core/package.json index bc5112b8df0cb..adcf78bf3fa81 100644 --- a/packages/cubejs-server-core/package.json +++ b/packages/cubejs-server-core/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/server-core", "description": "Cube.js base component to wire all backend components together", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,16 +29,16 @@ "unit": "jest --runInBand --forceExit --coverage dist/test" }, "dependencies": { - "@cubejs-backend/api-gateway": "1.6.67", - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/cloud": "1.6.67", - "@cubejs-backend/cubestore-driver": "1.6.67", + "@cubejs-backend/api-gateway": "1.7.0", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/cloud": "1.7.0", + "@cubejs-backend/cubestore-driver": "1.7.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/native": "1.6.67", - "@cubejs-backend/query-orchestrator": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", - "@cubejs-backend/templates": "1.6.67", + "@cubejs-backend/native": "1.7.0", + "@cubejs-backend/query-orchestrator": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", + "@cubejs-backend/templates": "1.7.0", "codesandbox-import-utils": "^2.1.12", "cross-spawn": "^7.0.1", "fs-extra": "^8.1.0", @@ -62,8 +62,8 @@ "ws": "^7.5.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-client/playground": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-client/playground": "1.7.0", "@types/cross-spawn": "^6.0.2", "@types/express": "^4.17.21", "@types/fs-extra": "^9.0.8", diff --git a/packages/cubejs-server/CHANGELOG.md b/packages/cubejs-server/CHANGELOG.md index 3a9ac47d13e7f..a94f6e537a947 100644 --- a/packages/cubejs-server/CHANGELOG.md +++ b/packages/cubejs-server/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/server + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/server diff --git a/packages/cubejs-server/package.json b/packages/cubejs-server/package.json index fcf7da509a24f..374d31d5dbdb3 100644 --- a/packages/cubejs-server/package.json +++ b/packages/cubejs-server/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/server", "description": "Cube.js all-in-one server", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "types": "index.d.ts", "repository": { "type": "git", @@ -40,11 +40,11 @@ "jest:shapshot": "jest --updateSnapshot test" }, "dependencies": { - "@cubejs-backend/cubestore-driver": "1.6.67", + "@cubejs-backend/cubestore-driver": "1.7.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/native": "1.6.67", - "@cubejs-backend/server-core": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/native": "1.7.0", + "@cubejs-backend/server-core": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "@oclif/color": "^1.0.0", "@oclif/command": "^1.8.13", "@oclif/config": "^1.18.2", @@ -61,8 +61,8 @@ "ws": "^7.1.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/query-orchestrator": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/query-orchestrator": "1.7.0", "@oclif/dev-cli": "^1.23.1", "@types/body-parser": "^1.19.0", "@types/cors": "^2.8.8", diff --git a/packages/cubejs-snowflake-driver/CHANGELOG.md b/packages/cubejs-snowflake-driver/CHANGELOG.md index a9244429ff853..632d6b37a8a45 100644 --- a/packages/cubejs-snowflake-driver/CHANGELOG.md +++ b/packages/cubejs-snowflake-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/snowflake-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/snowflake-driver diff --git a/packages/cubejs-snowflake-driver/package.json b/packages/cubejs-snowflake-driver/package.json index ace5ce5277c71..1e58a24e8d48c 100644 --- a/packages/cubejs-snowflake-driver/package.json +++ b/packages/cubejs-snowflake-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/snowflake-driver", "description": "Cube.js Snowflake database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,8 +28,8 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.726.0", - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "snowflake-sdk": "^2.4.0" }, "license": "Apache-2.0", @@ -40,7 +40,7 @@ "extends": "../cubejs-linter" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "typescript": "~5.2.2", "vitest": "^4" } diff --git a/packages/cubejs-sqlite-driver/CHANGELOG.md b/packages/cubejs-sqlite-driver/CHANGELOG.md index 5a1a0ad79d1a3..39aa189a3e65b 100644 --- a/packages/cubejs-sqlite-driver/CHANGELOG.md +++ b/packages/cubejs-sqlite-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/sqlite-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/sqlite-driver diff --git a/packages/cubejs-sqlite-driver/package.json b/packages/cubejs-sqlite-driver/package.json index 4be6cbb9faf55..739c4796c8f7c 100644 --- a/packages/cubejs-sqlite-driver/package.json +++ b/packages/cubejs-sqlite-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/sqlite-driver", "description": "Cube.js Sqlite database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -18,13 +18,13 @@ "unit": "jest" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "sqlite3": "^5.1.7" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "jest": "^29" }, "publishConfig": { diff --git a/packages/cubejs-templates/CHANGELOG.md b/packages/cubejs-templates/CHANGELOG.md index a816ba72faf4f..d8d96772602ea 100644 --- a/packages/cubejs-templates/CHANGELOG.md +++ b/packages/cubejs-templates/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/templates + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/templates diff --git a/packages/cubejs-templates/package.json b/packages/cubejs-templates/package.json index ff4d49ced12ce..8bbd2b72c811b 100644 --- a/packages/cubejs-templates/package.json +++ b/packages/cubejs-templates/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/templates", - "version": "1.6.67", + "version": "1.7.0", "description": "Cube.js Templates helpers", "author": "Cube Dev, Inc.", "repository": { @@ -31,7 +31,7 @@ "extends": "../cubejs-linter" }, "dependencies": { - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/shared": "1.7.0", "cross-spawn": "^7.0.3", "decompress": "^4.2.1", "decompress-targz": "^4.1.1", @@ -41,7 +41,7 @@ "source-map-support": "^0.5.19" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-testing-drivers/CHANGELOG.md b/packages/cubejs-testing-drivers/CHANGELOG.md index d691ac4db9a84..f971a1c7365cb 100644 --- a/packages/cubejs-testing-drivers/CHANGELOG.md +++ b/packages/cubejs-testing-drivers/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +### Bug Fixes + +- **mysql-driver:** Use string for decimal values ([4f2d3b9](https://github.com/cube-js/cube/commit/4f2d3b9416834ab87dbf84b24bed1e132bf2e512)) + +- fix(cubeorchestrator)!: Serialize all numeric query results as JSON strings, fix #1879 ([bd88651](https://github.com/cube-js/cube/commit/bd8865113889b5153ed837c3dc51bc6bca5d3585)), closes [#1879](https://github.com/cube-js/cube/issues/1879) +- feat(server-core)!: Remove deprecated dbType option (#11045) ([08a2a6b](https://github.com/cube-js/cube/commit/08a2a6b37efb450377383fbb0e5041fff106cff2)), closes [#11045](https://github.com/cube-js/cube/issues/11045) + +### BREAKING CHANGES + +- All numeric values in query results are now serialized + as JSON strings regardless of the data source driver. Previously the + JSON type of numeric values varied by driver (string or number). + Clients that relied on receiving JSON numbers must parse the string + values instead. +- CreateOptions.dbType has been removed. Use driverFactory instead. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/testing-drivers diff --git a/packages/cubejs-testing-drivers/package.json b/packages/cubejs-testing-drivers/package.json index 338005c75ddc4..3cb74b42e39de 100644 --- a/packages/cubejs-testing-drivers/package.json +++ b/packages/cubejs-testing-drivers/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/testing-drivers", - "version": "1.6.67", + "version": "1.7.0", "description": "Cube.js drivers test suite", "author": "Cube Dev, Inc.", "repository": { @@ -76,25 +76,25 @@ "dist/src" ], "dependencies": { - "@cubejs-backend/athena-driver": "1.6.67", - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/bigquery-driver": "1.6.67", - "@cubejs-backend/clickhouse-driver": "1.6.67", - "@cubejs-backend/cubestore-driver": "1.6.67", - "@cubejs-backend/databricks-jdbc-driver": "1.6.67", + "@cubejs-backend/athena-driver": "1.7.0", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/bigquery-driver": "1.7.0", + "@cubejs-backend/clickhouse-driver": "1.7.0", + "@cubejs-backend/cubestore-driver": "1.7.0", + "@cubejs-backend/databricks-jdbc-driver": "1.7.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/mssql-driver": "1.6.67", - "@cubejs-backend/mysql-driver": "1.6.67", - "@cubejs-backend/oracle-driver": "1.6.67", - "@cubejs-backend/postgres-driver": "1.6.67", - "@cubejs-backend/query-orchestrator": "1.6.67", - "@cubejs-backend/server-core": "1.6.67", - "@cubejs-backend/shared": "1.6.67", - "@cubejs-backend/snowflake-driver": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", - "@cubejs-client/core": "1.6.67", - "@cubejs-client/ws-transport": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/mssql-driver": "1.7.0", + "@cubejs-backend/mysql-driver": "1.7.0", + "@cubejs-backend/oracle-driver": "1.7.0", + "@cubejs-backend/postgres-driver": "1.7.0", + "@cubejs-backend/query-orchestrator": "1.7.0", + "@cubejs-backend/server-core": "1.7.0", + "@cubejs-backend/shared": "1.7.0", + "@cubejs-backend/snowflake-driver": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", + "@cubejs-client/core": "1.7.0", + "@cubejs-client/ws-transport": "1.7.0", "@jest/globals": "^29", "@types/jest": "^29", "@types/node": "^22", diff --git a/packages/cubejs-testing-shared/CHANGELOG.md b/packages/cubejs-testing-shared/CHANGELOG.md index 33b4f7d22de2d..c7a56a88c7d5c 100644 --- a/packages/cubejs-testing-shared/CHANGELOG.md +++ b/packages/cubejs-testing-shared/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +### Features + +- **mysql-driver:** Migrate driver to mysql2 library, thanks [@nathanfallet](https://github.com/nathanfallet) ([553b7ef](https://github.com/cube-js/cube/commit/553b7ef98f1fdf050013aaa81ab629bcc3bbeddc)) + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/testing-shared diff --git a/packages/cubejs-testing-shared/package.json b/packages/cubejs-testing-shared/package.json index 5e4285b6dccbd..a0c16435aea17 100644 --- a/packages/cubejs-testing-shared/package.json +++ b/packages/cubejs-testing-shared/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/testing-shared", - "version": "1.6.67", + "version": "1.7.0", "description": "Cube.js Testing Helpers", "author": "Cube Dev, Inc.", "repository": { @@ -26,16 +26,16 @@ ], "dependencies": { "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/query-orchestrator": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/query-orchestrator": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "@testcontainers/kafka": "~10.28.0", "dedent": "^0.7.0", "node-fetch": "^2.6.7", "testcontainers": "^10.28.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@jest/globals": "^29", "@types/dedent": "^0.7.0", "@types/jest": "^29", diff --git a/packages/cubejs-testing/CHANGELOG.md b/packages/cubejs-testing/CHANGELOG.md index 85b18afcc192b..e5f5270cef6f8 100644 --- a/packages/cubejs-testing/CHANGELOG.md +++ b/packages/cubejs-testing/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- fix(cubeorchestrator)!: Serialize all numeric query results as JSON strings, fix #1879 ([bd88651](https://github.com/cube-js/cube/commit/bd8865113889b5153ed837c3dc51bc6bca5d3585)), closes [#1879](https://github.com/cube-js/cube/issues/1879) +- feat(server-core)!: Remove deprecated dbType option (#11045) ([08a2a6b](https://github.com/cube-js/cube/commit/08a2a6b37efb450377383fbb0e5041fff106cff2)), closes [#11045](https://github.com/cube-js/cube/issues/11045) +- feat!: Remove deprecated context_to_roles configuration option (#11055) ([41d42d6](https://github.com/cube-js/cube/commit/41d42d669486e763ad984fda5e64e33438baa5a4)), closes [#11055](https://github.com/cube-js/cube/issues/11055) + +### BREAKING CHANGES + +- All numeric values in query results are now serialized + as JSON strings regardless of the data source driver. Previously the + JSON type of numeric values varied by driver (string or number). + Clients that relied on receiving JSON numbers must parse the string + values instead. +- CreateOptions.dbType has been removed. Use driverFactory instead. +- The context_to_roles (contextToRoles) configuration option has been removed. It was deprecated in v1.6.4. Use context_to_groups (contextToGroups) instead. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/testing diff --git a/packages/cubejs-testing/package.json b/packages/cubejs-testing/package.json index b31c8f7fd2899..3a28e31a544cf 100644 --- a/packages/cubejs-testing/package.json +++ b/packages/cubejs-testing/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/testing", - "version": "1.6.67", + "version": "1.7.0", "description": "Cube.js e2e tests", "author": "Cube Dev, Inc.", "repository": { @@ -100,15 +100,15 @@ "birdbox-fixtures" ], "dependencies": { - "@cubejs-backend/cubestore-driver": "1.6.67", + "@cubejs-backend/cubestore-driver": "1.7.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/ksql-driver": "1.6.67", - "@cubejs-backend/postgres-driver": "1.6.67", - "@cubejs-backend/query-orchestrator": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", - "@cubejs-client/ws-transport": "1.6.67", + "@cubejs-backend/ksql-driver": "1.7.0", + "@cubejs-backend/postgres-driver": "1.7.0", + "@cubejs-backend/query-orchestrator": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", + "@cubejs-client/ws-transport": "1.7.0", "dedent": "^0.7.0", "fs-extra": "^8.1.0", "http-proxy": "^1.18.1", @@ -119,8 +119,8 @@ }, "devDependencies": { "@4tw/cypress-drag-drop": "^1.6.0", - "@cubejs-backend/linter": "1.6.67", - "@cubejs-client/core": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-client/core": "1.7.0", "@jest/globals": "^29", "@types/dedent": "^0.7.0", "@types/http-proxy": "^1.17.5", diff --git a/packages/cubejs-trino-driver/CHANGELOG.md b/packages/cubejs-trino-driver/CHANGELOG.md index 450152cbb50bb..2af49b2a73bca 100644 --- a/packages/cubejs-trino-driver/CHANGELOG.md +++ b/packages/cubejs-trino-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/trino-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/trino-driver diff --git a/packages/cubejs-trino-driver/package.json b/packages/cubejs-trino-driver/package.json index 1e19b150b1e0f..cca2f1d52d311 100644 --- a/packages/cubejs-trino-driver/package.json +++ b/packages/cubejs-trino-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/trino-driver", "description": "Cube.js Trino database driver", "author": "Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,10 +28,10 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/prestodb-driver": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/prestodb-driver": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "node-fetch": "^2.6.1", "presto-client": "^1.2.0", "sqlstring": "^2.3.1" @@ -41,7 +41,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "jest": "^29", "testcontainers": "^10.28.0", diff --git a/packages/cubejs-vertica-driver/CHANGELOG.md b/packages/cubejs-vertica-driver/CHANGELOG.md index a54f9b974031c..bc7acbdd96977 100644 --- a/packages/cubejs-vertica-driver/CHANGELOG.md +++ b/packages/cubejs-vertica-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +**Note:** Version bump only for package @cubejs-backend/vertica-driver + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/vertica-driver diff --git a/packages/cubejs-vertica-driver/package.json b/packages/cubejs-vertica-driver/package.json index a09b79302cf67..17a1fe0e879c2 100644 --- a/packages/cubejs-vertica-driver/package.json +++ b/packages/cubejs-vertica-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/vertica-driver", "description": "Cube.js Vertica database driver", "author": "Eduard Karacharov, Tim Brown, Cube Dev, Inc.", - "version": "1.6.67", + "version": "1.7.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -19,16 +19,16 @@ "lint:fix": "eslint --fix **/*.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.6.67", - "@cubejs-backend/query-orchestrator": "1.6.67", - "@cubejs-backend/schema-compiler": "1.6.67", - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/base-driver": "1.7.0", + "@cubejs-backend/query-orchestrator": "1.7.0", + "@cubejs-backend/schema-compiler": "1.7.0", + "@cubejs-backend/shared": "1.7.0", "vertica-nodejs": "^1.0.3" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", - "@cubejs-backend/testing-shared": "1.6.67", + "@cubejs-backend/linter": "1.7.0", + "@cubejs-backend/testing-shared": "1.7.0", "@types/jest": "^29", "jest": "^29", "testcontainers": "^10.28.0" diff --git a/rust/cubesql/CHANGELOG.md b/rust/cubesql/CHANGELOG.md index ef4d0590c05cd..2d10ebf641e51 100644 --- a/rust/cubesql/CHANGELOG.md +++ b/rust/cubesql/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +- feat(schema-compiler)!: Remove deprecated running_total measure type (#11044) ([f45ea45](https://github.com/cube-js/cube/commit/f45ea456e4c3bfdc3663f8c992c911fdc9ed3730)), closes [#11044](https://github.com/cube-js/cube/issues/11044) + +### BREAKING CHANGES + +- The running_total measure type has been removed. Data models that use `type: running_total` will now fail validation. Replace them with a rolling_window measure using an unbounded trailing window. + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/cubesql diff --git a/rust/cubesql/package.json b/rust/cubesql/package.json index a8ba1fe04c1d7..aa9a47e536a09 100644 --- a/rust/cubesql/package.json +++ b/rust/cubesql/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cubesql", - "version": "1.6.67", + "version": "1.7.0", "description": "SQL API for Cube as proxy over MySQL protocol.", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" diff --git a/rust/cubestore/CHANGELOG.md b/rust/cubestore/CHANGELOG.md index b6feac111ba36..93880c577a378 100644 --- a/rust/cubestore/CHANGELOG.md +++ b/rust/cubestore/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.7.0](https://github.com/cube-js/cube/compare/v1.6.67...v1.7.0) (2026-07-06) + +### Features + +- **cubestore:** Upgrade docker image to Debian trixie and LLVM 22 ([1cb96ce](https://github.com/cube-js/cube/commit/1cb96ce2c788bd416c50bf6476c5533b403a44fa)) +- **native:** Initial support for Python 3.13 ([#9930](https://github.com/cube-js/cube/issues/9930)) ([f91a237](https://github.com/cube-js/cube/commit/f91a23728614dde9b9dc28b4e2a4662439670428)) + ## [1.6.67](https://github.com/cube-js/cube/compare/v1.6.66...v1.6.67) (2026-07-06) **Note:** Version bump only for package @cubejs-backend/cubestore diff --git a/rust/cubestore/Cargo.lock b/rust/cubestore/Cargo.lock index 0b03d371e528b..1d056bd6adcab 100644 --- a/rust/cubestore/Cargo.lock +++ b/rust/cubestore/Cargo.lock @@ -1558,7 +1558,7 @@ dependencies = [ [[package]] name = "cubestore" -version = "1.6.67" +version = "1.7.0" dependencies = [ "actix-rt", "anyhow", diff --git a/rust/cubestore/cubestore/Cargo.toml b/rust/cubestore/cubestore/Cargo.toml index fe4352b8a9b50..27d3068782ac9 100644 --- a/rust/cubestore/cubestore/Cargo.toml +++ b/rust/cubestore/cubestore/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cubestore" -version = "1.6.67" +version = "1.7.0" authors = ["Cube Dev, Inc."] edition = "2021" license = "Apache-2.0" diff --git a/rust/cubestore/package.json b/rust/cubestore/package.json index 39b2de9ca6be3..f000bff7d8ee8 100644 --- a/rust/cubestore/package.json +++ b/rust/cubestore/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cubestore", - "version": "1.6.67", + "version": "1.7.0", "description": "Cube.js pre-aggregation storage layer.", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -33,7 +33,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.6.67", + "@cubejs-backend/linter": "1.7.0", "@types/jest": "^29", "@types/node": "^18", "jest": "^29", @@ -43,7 +43,7 @@ "access": "public" }, "dependencies": { - "@cubejs-backend/shared": "1.6.67", + "@cubejs-backend/shared": "1.7.0", "@octokit/core": "^3.2.5", "source-map-support": "^0.5.19" }, From c4dd5fa05a25c6b32b51d4aac168dbc8ed571446 Mon Sep 17 00:00:00 2001 From: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Date: Mon, 6 Jul 2026 21:26:27 +0400 Subject: [PATCH 23/24] test(testing-drivers): Cover window function over measure (#11156) --- .../fixtures/bigquery.json | 4 ++- .../fixtures/databricks-jdbc.json | 4 ++- .../fixtures/mssql.json | 2 ++ .../fixtures/mysql.json | 4 ++- .../fixtures/oracle.json | 6 ++++- .../src/tests/testQueries.ts | 17 +++++++++++++ .../athena-export-bucket-s3-full.test.ts.snap | 25 +++++++++++++++++++ ...ckhouse-export-bucket-s3-full.test.ts.snap | 25 +++++++++++++++++++ ...-export-bucket-s3-prefix-full.test.ts.snap | 25 +++++++++++++++++++ .../clickhouse-full.test.ts.snap | 25 +++++++++++++++++++ .../__snapshots__/postgres-full.test.ts.snap | 25 +++++++++++++++++++ ...gres-pre-agg-credentials-full.test.ts.snap | 25 +++++++++++++++++++ ...edshift-export-bucket-s3-full.test.ts.snap | 25 +++++++++++++++++++ .../__snapshots__/redshift-full.test.ts.snap | 25 +++++++++++++++++++ .../snowflake-encrypted-pk-full.test.ts.snap | 25 +++++++++++++++++++ ...lake-export-bucket-azure-full.test.ts.snap | 25 +++++++++++++++++++ ...port-bucket-azure-prefix-full.test.ts.snap | 25 +++++++++++++++++++ ...-via-storage-integration-full.test.ts.snap | 25 +++++++++++++++++++ ...wflake-export-bucket-gcs-full.test.ts.snap | 25 +++++++++++++++++++ ...export-bucket-gcs-prefix-full.test.ts.snap | 25 +++++++++++++++++++ ...owflake-export-bucket-s3-full.test.ts.snap | 25 +++++++++++++++++++ ...-export-bucket-s3-prefix-full.test.ts.snap | 25 +++++++++++++++++++ ...ge-integration-iam-roles-full.test.ts.snap | 25 +++++++++++++++++++ .../__snapshots__/snowflake-full.test.ts.snap | 25 +++++++++++++++++++ 24 files changed, 483 insertions(+), 4 deletions(-) diff --git a/packages/cubejs-testing-drivers/fixtures/bigquery.json b/packages/cubejs-testing-drivers/fixtures/bigquery.json index d7e793fb1631f..7dc551a514406 100644 --- a/packages/cubejs-testing-drivers/fixtures/bigquery.json +++ b/packages/cubejs-testing-drivers/fixtures/bigquery.json @@ -205,7 +205,8 @@ "SQL API: Complex Rollup", "SQL API: Rollup with aliases", "SQL API: Nested Rollup over asterisk", - "SQL API: Extended nested Rollup over asterisk" + "SQL API: Extended nested Rollup over asterisk", + "SQL API: Window function over measure (running total)" ], "tesseractSkip": [ "must download query from the data source via memory", @@ -245,6 +246,7 @@ "querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo", "SQL API: Timeshift measure from cube", "querying BigECommerce: multi-stage group by time dimension", + "SQL API: Window function over measure (running total)", "---- Different results comparing to baseQuery version. Need to investigate ----", "SQL API: SQL push down push to cube quoted alias", diff --git a/packages/cubejs-testing-drivers/fixtures/databricks-jdbc.json b/packages/cubejs-testing-drivers/fixtures/databricks-jdbc.json index 65d74caf1e03b..4e6b5885f835f 100644 --- a/packages/cubejs-testing-drivers/fixtures/databricks-jdbc.json +++ b/packages/cubejs-testing-drivers/fixtures/databricks-jdbc.json @@ -263,7 +263,8 @@ "SQL API: Nested Rollup", "SQL API: Nested Rollup with aliases", "SQL API: Nested Rollup over asteriks", - "SQL API: Extended nested Rollup over asterisk" + "SQL API: Extended nested Rollup over asterisk", + "SQL API: Window function over measure (running total)" ], "tesseractSkip": [ "must download query from the data source via memory", @@ -295,6 +296,7 @@ "Tesseract: querying BigECommerce with Retail Calendar: totalCountRetailWeekAgo", "Tesseract: SQL API: Timeshift measure from cube", "querying BigECommerce: SeveralMultiStageMeasures", + "SQL API: Window function over measure (running total)", "---- Different results comparing to baseQuery version. Need to investigate ----", "querying ECommerce: dimensions", diff --git a/packages/cubejs-testing-drivers/fixtures/mssql.json b/packages/cubejs-testing-drivers/fixtures/mssql.json index b7b336480a89e..df97d18754b60 100644 --- a/packages/cubejs-testing-drivers/fixtures/mssql.json +++ b/packages/cubejs-testing-drivers/fixtures/mssql.json @@ -197,6 +197,7 @@ "SQL API: SQL push down push to cube quoted alias", "SQL API: Date/time comparison with SQL push down", "SQL API: Date/time comparison with date_trunc with SQL push down", + "SQL API: Window function over measure (running total)", "---------------------------------------", "Error during rewrite: Can't detect Cube query and it may be not supported yet.", @@ -248,6 +249,7 @@ "SQL API: SQL push down push to cube quoted alias", "SQL API: Date/time comparison with SQL push down", "SQL API: Date/time comparison with date_trunc with SQL push down", + "SQL API: Window function over measure (running total)", "---------------------------------------", "Error during rewrite: Can't detect Cube query and it may be not supported yet.", diff --git a/packages/cubejs-testing-drivers/fixtures/mysql.json b/packages/cubejs-testing-drivers/fixtures/mysql.json index 6bcb736170bd9..2ef188ac76a69 100644 --- a/packages/cubejs-testing-drivers/fixtures/mysql.json +++ b/packages/cubejs-testing-drivers/fixtures/mysql.json @@ -194,7 +194,8 @@ "SQL API: SQL push down push to cube quoted alias", "SQL API: Date/time comparison with date_trunc with SQL push down", "SQL API: Rolling Window YTD (year + month + day + date_trunc equal)", - "SQL API: Rolling Window YTD (year + month + day + date_trunc IN)" + "SQL API: Rolling Window YTD (year + month + day + date_trunc IN)", + "SQL API: Window function over measure (running total)" ], "tesseractSkip": [ "querying custom granularities ECommerce: count by three_months_by_march + no dimension", @@ -213,6 +214,7 @@ "SQL API: Rolling Window YTD (year + month + day + date_trunc IN)", "SQL API: SQL push down push to cube quoted alias", "SQL API: Date/time comparison with date_trunc with SQL push down", + "SQL API: Window function over measure (running total)", "---- Different results comparing to baseQuery version. Need to investigate ----", "SQL API: Timeshift measure from cube", diff --git a/packages/cubejs-testing-drivers/fixtures/oracle.json b/packages/cubejs-testing-drivers/fixtures/oracle.json index a5c55f50bc7cd..33920e66cff3e 100644 --- a/packages/cubejs-testing-drivers/fixtures/oracle.json +++ b/packages/cubejs-testing-drivers/fixtures/oracle.json @@ -207,7 +207,8 @@ "SQL API: Rolling Window YTD (year + month + day + date_trunc equal)", "SQL API: Rolling Window YTD (year + month + day + date_trunc IN)", "SQL API: SQL push down push to cube quoted alias", - "SQL API: Date/time comparison with date_trunc with SQL push down" + "SQL API: Date/time comparison with date_trunc with SQL push down", + "SQL API: Window function over measure (running total)" ], "tesseractSkip": [ "querying Products: dimensions -- doesn't work wo ordering", @@ -241,6 +242,9 @@ "---- CubeSQL can't rewrite this query shape (date_trunc compared to a cast); mysql/mssql skip it too ----", "SQL API: Date/time comparison with date_trunc with SQL push down", + "---- SQL API push down not yet supported on Oracle ----", + "SQL API: Window function over measure (running total)", + "---- Different results comparing to baseQuery version. Need to investigate ----", "querying BigECommerce: rolling window YTD (month + week)", "querying BigECommerce: rolling window YTD (month + week + no gran)", diff --git a/packages/cubejs-testing-drivers/src/tests/testQueries.ts b/packages/cubejs-testing-drivers/src/tests/testQueries.ts index 70a7838c4849f..d3c70c26d1364 100644 --- a/packages/cubejs-testing-drivers/src/tests/testQueries.ts +++ b/packages/cubejs-testing-drivers/src/tests/testQueries.ts @@ -2689,5 +2689,22 @@ from `); expect(res.rows).toMatchSnapshot(); }); + + executePg('SQL API: Window function over measure (running total)', async (connection) => { + const res = await connection.query(` + SELECT + DATE_TRUNC('quarter', orderDate) AS "orderDateQ", + MEASURE(count) AS "count", + SUM(MEASURE(count)) OVER ( + ORDER BY DATE_TRUNC('quarter', orderDate) + ROWS UNBOUNDED PRECEDING + ) AS "runningTotal" + FROM "BigECommerce" + WHERE DATE_TRUNC('year', orderDate) = CAST('2020-01-01' AS DATE) + GROUP BY 1 + ORDER BY 1 ASC NULLS FIRST; + `); + expect(res.rows).toMatchSnapshot(); + }); }); } diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/athena-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/athena-export-bucket-s3-full.test.ts.snap index 63b0cbb5ba3ae..5ce886dc83067 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/athena-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/athena-export-bucket-s3-full.test.ts.snap @@ -4485,6 +4485,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/athena-driver SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/athena-driver SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-full.test.ts.snap index 0d1cf3665deec..4a2222489ee43 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-full.test.ts.snap @@ -1898,6 +1898,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3 SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-prefix-full.test.ts.snap index 05b578ce6da82..3341c9cdd0ee3 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-export-bucket-s3-prefix-full.test.ts.snap @@ -1898,6 +1898,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/clickhouse-driver export-bucket-s3-prefix SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-full.test.ts.snap index d6614d4664f43..e72795c47980d 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/clickhouse-full.test.ts.snap @@ -1914,6 +1914,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/clickhouse-driver SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/clickhouse-driver SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-full.test.ts.snap index 8222e8db9b17d..525f9578f2055 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/postgres-driver SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/postgres-driver SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap index ca8de71d5688d..831ef18bb7d6f 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/postgres-pre-agg-credentials-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/postgres-driver pre-agg-credentials SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap index f996f43308760..a35373d909249 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-export-bucket-s3-full.test.ts.snap @@ -12536,6 +12536,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/redshift-driver export-bucket-s3 SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-full.test.ts.snap index 7723eb1be88df..51f73cc39569f 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/redshift-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/redshift-full.test.ts.snap @@ -12536,6 +12536,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/redshift-driver SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/redshift-driver SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-encrypted-pk-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-encrypted-pk-full.test.ts.snap index 166d9423bc751..e17065ed82cf4 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-encrypted-pk-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-encrypted-pk-full.test.ts.snap @@ -8126,6 +8126,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver encrypted-pk SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-full.test.ts.snap index 175b1eb7053b7..787ba3d8b5421 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-full.test.ts.snap @@ -22112,6 +22112,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-prefix-full.test.ts.snap index d6f7e7a90149f..1a988231174ac 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-prefix-full.test.ts.snap @@ -21917,6 +21917,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-prefix SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-via-storage-integration-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-via-storage-integration-full.test.ts.snap index 1331bec617f76..bfde61d472f70 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-via-storage-integration-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-azure-via-storage-integration-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-azure-via-storage-integration SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-full.test.ts.snap index bfa961525e00b..8c0bc90d5d16f 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-prefix-full.test.ts.snap index 2bceaccec2b18..0f4cbebf51e2f 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-gcs-prefix-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-gcs-prefix SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-full.test.ts.snap index 9d58e8b313dd4..f68f2fadeffb5 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3 SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-prefix-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-prefix-full.test.ts.snap index 73180603e7732..3355c7a95e3cd 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-prefix-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-prefix-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-prefix SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-via-storage-integration-iam-roles-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-via-storage-integration-iam-roles-full.test.ts.snap index bf00d1307b999..25fe5aad506cb 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-via-storage-integration-iam-roles-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-export-bucket-s3-via-storage-integration-iam-roles-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver export-bucket-s3-via-storage-integration-iam-roles SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { diff --git a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-full.test.ts.snap b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-full.test.ts.snap index 6f99c72f6f0ab..fa4a91e3f7082 100644 --- a/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-full.test.ts.snap +++ b/packages/cubejs-testing-drivers/test/__snapshots__/snowflake-full.test.ts.snap @@ -12544,6 +12544,31 @@ Array [ ] `; +exports[`Queries with the @cubejs-backend/snowflake-driver SQL API: Window function over measure (running total) 1`] = ` +Array [ + Object { + "count": "5", + "orderDateQ": 2020-01-01T00:00:00.000Z, + "runningTotal": "5", + }, + Object { + "count": "13", + "orderDateQ": 2020-04-01T00:00:00.000Z, + "runningTotal": "18", + }, + Object { + "count": "6", + "orderDateQ": 2020-07-01T00:00:00.000Z, + "runningTotal": "24", + }, + Object { + "count": "20", + "orderDateQ": 2020-10-01T00:00:00.000Z, + "runningTotal": "44", + }, +] +`; + exports[`Queries with the @cubejs-backend/snowflake-driver SQL API: metabase count cast to float32 from push down: metabase_count_cast_to_float32_from_push_down 1`] = ` Array [ Object { From fc0d82b7eb81559e0b2344ff721abfaae91cc76c Mon Sep 17 00:00:00 2001 From: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Date: Mon, 6 Jul 2026 21:47:57 +0400 Subject: [PATCH 24/24] fix(cubesql): Resolve schema-qualified `pg_catalog` functions (#11190) --- packages/cubejs-backend-native/Cargo.lock | 12 ++++++------ rust/cubesql/Cargo.lock | 12 ++++++------ rust/cubesql/cubesql/Cargo.toml | 2 +- rust/cubesql/cubesql/src/compile/mod.rs | 15 +++++++++++++++ ...sql__compile__tests__pg_catalog_array_agg.snap | 9 +++++++++ 5 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__pg_catalog_array_agg.snap diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index ac55757514607..401f79adc4bee 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -897,7 +897,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "arrow 13.0.0", "chrono", @@ -1073,7 +1073,7 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "ahash 0.7.8", "arrow 13.0.0", @@ -1106,7 +1106,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "arrow 13.0.0", "ordered-float 2.10.1", @@ -1117,7 +1117,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "async-trait", "chrono", @@ -1130,7 +1130,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "ahash 0.7.8", "arrow 13.0.0", @@ -1141,7 +1141,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "ahash 0.7.8", "arrow 13.0.0", diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock index e16d09e6e594d..618695d676a0d 100644 --- a/rust/cubesql/Cargo.lock +++ b/rust/cubesql/Cargo.lock @@ -698,7 +698,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "arrow", "chrono", @@ -822,7 +822,7 @@ dependencies = [ [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "ahash 0.7.8", "arrow", @@ -855,7 +855,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "arrow", "ordered-float 2.10.0", @@ -866,7 +866,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "async-trait", "chrono", @@ -879,7 +879,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "ahash 0.7.8", "arrow", @@ -890,7 +890,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=1a849d723be7a13dfe4cbb83a574d5da735e885f#1a849d723be7a13dfe4cbb83a574d5da735e885f" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=c7e685599fefdf0692d44ac7c2f6aebd6b927bc0#c7e685599fefdf0692d44ac7c2f6aebd6b927bc0" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/cubesql/Cargo.toml b/rust/cubesql/cubesql/Cargo.toml index b8d94975a9e69..5492e1fcdc8a7 100644 --- a/rust/cubesql/cubesql/Cargo.toml +++ b/rust/cubesql/cubesql/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://cube.dev" [dependencies] arc-swap = "1" -datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "1a849d723be7a13dfe4cbb83a574d5da735e885f", default-features = false, features = [ +datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "c7e685599fefdf0692d44ac7c2f6aebd6b927bc0", default-features = false, features = [ "regex_expressions", "unicode_expressions", ] } diff --git a/rust/cubesql/cubesql/src/compile/mod.rs b/rust/cubesql/cubesql/src/compile/mod.rs index 3058c8de5d167..a2df7daa4fdda 100644 --- a/rust/cubesql/cubesql/src/compile/mod.rs +++ b/rust/cubesql/cubesql/src/compile/mod.rs @@ -17276,6 +17276,21 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), Ok(()) } + #[tokio::test] + async fn test_pg_catalog_array_agg() -> Result<(), CubeError> { + insta::assert_snapshot!( + "pg_catalog_array_agg", + execute_query( + r#"SELECT pg_catalog.array_agg(a) AS labels FROM (VALUES (1), (2), (3)) AS t(a)"# + .to_string(), + DatabaseProtocol::PostgreSQL + ) + .await? + ); + + Ok(()) + } + #[tokio::test] async fn test_format_function() -> Result<(), CubeError> { // Test: Basic usage with a single string diff --git a/rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__pg_catalog_array_agg.snap b/rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__pg_catalog_array_agg.snap new file mode 100644 index 0000000000000..f2dfc6c95f48a --- /dev/null +++ b/rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__pg_catalog_array_agg.snap @@ -0,0 +1,9 @@ +--- +source: cubesql/src/compile/mod.rs +expression: "execute_query(r#\"SELECT pg_catalog.array_agg(a) AS labels FROM (VALUES (1), (2), (3)) AS t(a)\"#.to_string(),\nDatabaseProtocol::PostgreSQL).await?" +--- ++---------+ +| labels | ++---------+ +| {1,2,3} | ++---------+