在Azure数据仓库SQL中创建实例化视图错误

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

我遇到错误:

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

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

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]
sql azure view materialized azure-synapse
1个回答
0
投票

这可能是因为Azure Synapse(DW)实例化视图仅在存在某种聚合时才可能起作用(可能是为了确保某些列的唯一性)。This page讨论需要满足以下两个条件之一:

  1. SELECT列表包含一个聚合函数。
  2. GROUP BY用于实例化视图定义,并且GROUP BY中的所有列都包括在SELECT列表中。 GROUP BY子句中最多可以使用32列。
© www.soinside.com 2019 - 2024. All rights reserved.