Azure SQL DW:如何创建具有计算列的外部表以拆分DateTime

时间:2018-04-02 21:58:31

标签: azure-sqldw external-tables

我在尝试使用基于DOB列的计算列创建外部表时收到错误,目的是将日期拆分为三列(年,月,日)。

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'.

我该如何解决这个问题?我有理论认为这可能不是通过外部表支持的吗?如果有办法实施有什么建议吗?

1 个答案:

答案 0 :(得分:2)

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

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

NB DATEPART参数不带引号,所以我更正了您的示例。