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
参数不带引号,所以我已经更正了你的例子。
我在尝试使用基于 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
参数不带引号,所以我已经更正了你的例子。