在 BigQuery 中同时使用 CREATE TABLE / TEMP TABLE 和 WITH 子句时出现问题

问题描述 投票:0回答:1

我在尝试使用 CREATE TABLE 语句以及 BigQuery 中前面的 WITH 子句创建临时表时遇到语法错误。

我遇到错误

Syntax error: Unexpected keyword CREATE at [18:1]

可供参考的可重现查询示例。删除了所有业务逻辑,以便任何人都可以在其 BQ 控制台上运行。

-- Create dummy client products table
WITH 
client_products AS (
  SELECT
    'Retailer A' AS retailer,
    1 AS product_id,
    101 AS group_id,
    '1234567890123' AS gtin,
    'Category A' AS category,
    'Client Product A' AS client_product,
    'Competitor Product A' AS key_competitor_product,
    'Product A' AS product_name,
    'Image A' AS product_image
)

-- All products.
create temp table all_products_test AS (
  SELECT
    retailer,
    product_id,
    group_id,
    gtin,
    category,
    client_product,
    key_competitor_product,
    product_name,
    product_image,
    brand
  FROM client_products
);

我猜测这是因为 BQ 中的 CTA 存在一些范围问题。但我不知道如何使用WITH和TEMP表。我的用例需要两者。

google-bigquery common-table-expression
1个回答
0
投票

WITH
属于
SELECT
子句,因此需要将两者都嵌套到
CREATE TABLE
子句中:


-- Create dummy client products table
create temp table all_products_test AS (

  WITH 
  client_products AS (
    SELECT
      'Retailer A' AS retailer,
      1 AS product_id,
      101 AS group_id,
      '1234567890123' AS gtin,
      'Category A' AS category,
      'Client Product A' AS client_product,
      'Competitor Product A' AS key_competitor_product,
      'Product A' AS product_name,
      'Image A' AS product_image
  )

  -- All products.
  SELECT
    retailer,
    product_id,
    group_id,
    gtin,
    category,
    client_product,
    key_competitor_product,
    product_name,
    product_image,
    brand
  FROM client_products
);
© www.soinside.com 2019 - 2024. All rights reserved.