ETL三重引用timeKey,子查询返回多于1个值

ETL triple reference timeKey, subquery returned more than 1 value

我正在编写一个 ETL,我试图让我的维度引用时间维度 3 次。但是我连第一个都做不对

错误说:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

我的代码:

SELECT e.eventName, 
       e.eventType, 
       e.numberOfPersons,
      (SELECT  timeKey 
       FROM    starSchema.dbo.timeDim 
       JOIN    reservation r 
              ON r.reservationDate = timeDim.DATE) AS resDate, 
       e.eventStartDate, 
       e.eventEndDate, 
       contact.name, 
       customer.company
FROM   events e 
JOIN   reservation r 
       ON e.reservationId = r.reservationId
JOIN   customer 
       ON e.customerId = customer.customerId
JOIN   contact 
       ON customer.contactId = contact.contactId

我正在尝试将源日期时间与我的时间维度和 return timeKey 结合起来。

我的目标是有一个 timeKey(int) 来引用时间维度。

我想用 r.reservationdate、e.eventStartDate 和 e.eventEndDate 执行此操作。

我的时间维度图片:

来源图片:

我想你只是想要一个相关的子查询:

(SELECT timeKey FROM starSchema.dbo.timeDim WHERE r.reservationDate = timeDim.DATE) AS resDate, 

您不想在子查询中使用 JOIN。您希望连接到外部查询中的预订 table。