0

我收到错误:

无法在视图“Sample.wwi.SalesByTerritory”上创建聚集索引“SalesByTerritory”,因为它不聚合结果。考虑更改视图定义。

我正在尝试在 Azure SQL 数据仓库(现为 Azure Synapse)中创建物化视图。我只是想用销售表创建一个视图,并从另一个表中获取地区名称和日期。下面是我正在使用的代码:

CREATE MATERIALIZED VIEW wwi.SalesByTerritory  
WITH (distribution = hash([Sale Key]))
AS
SELECT Sale.[Sale Key],
    Sale.[Description],
    Sale.[Quantity],
    Sale.[Profit],
    City.[Sales Territory],
    SaleDate.[Date],
    SaleDate.[Fiscal Month Label]
FROM wwi.fact_Sale Sale 
JOIN wwi.dimension_City City ON Sale.[City Key] = City.[City Key]
JOIN wwi.dimension_Date SaleDate ON Sale.[Invoice Date Key] = SaleDate.[Date]
4

2 回答 2

1

这可能是因为 Azure Synapse (DW) 物化视图只能在存在一些聚合时工作(可能是为了确保某些列的唯一性)。 此页面讨论需要满足以下两个条件之一:

  1. SELECT 列表包含一个聚合函数。
  2. GROUP BY 用于物化视图定义中,GROUP BY 中的所有列都包含在 SELECT 列表中。GROUP BY 子句中最多可以使用 32 列。
于 2020-04-14T21:52:29.697 回答
0

从 Azure Synapse(以前称为 Azure SQL 数据仓库)的官方 Microsoft 文档中可以看出,物化视图定义的 SELECT 列表中需要聚合函数。支持的聚合包括 MAX、MIN、AVG、COUNT、COUNT_BIG、SUM、VAR、STDEV。

此外,物化视图定义中的 SELECT 列表需要至少满足以下两个条件之一:

  • SELECT 列表包含一个聚合函数。
  • GROUP BY 用于物化视图定义中,GROUP BY 中的所有列都包含在 SELECT 列表中。GROUP BY 子句中最多可以使用 32 列。
于 2022-01-13T17:24:57.247 回答