Azure SQL DW:如何创建一个带有计算列的外部 table 来拆分 DateTime

Azure SQL DW: How can I create an external table with calculated columns to split DateTime

我在尝试使用基于 DOB 列的计算列创建外部 Table 以将日期拆分为三列(年、月、日)时收到错误消息。

dbo.Persons 的示例列:

   | FirstName | LastName | DOB | DOBYear | DOBMonth | DOBDay |

SQL代码:

CREATE EXTERNAL TABLE [dbo].Person
(
FirstName VARCHAR(250), 
LastName VARCHAR(250), 
DOB datetimeoffset,
DOBYear DATE AS DATEPART("yyyy", DOB)
)
WITH
(
    LOCATION='.....' 
,   DATA_SOURCE = ....
,   FILE_FORMAT = ....
,   REJECT_TYPE = VALUE
,   REJECT_VALUE = 0
)
;

但是我永远无法让它执行,因为我收到以下错误:

Msg 103010, Level 16, State 1, Line 22
Parse error at line: 28, column: 16: Incorrect syntax near 'DATEPART'.

我该如何解决这个问题?我的理论是这可能不受外部 table 支持?如果有实现的方法有什么建议吗?

Azure SQL 数据仓库外部表不支持计算列。但是,您可以在顶部创建一个视图来达到相同的目的,例如

CREATE VIEW dbo.vw_person
AS
SELECT 
    FirstName,
    LastName,
    DOB,
    DATEPART( yyyy, DOB ) AS DOBYear
FROM dbo.Person

注意 DATEPART 参数不带引号,所以我已经更正了你的例子。