Azure SQL DW: как создать внешнюю таблицу с вычисляемыми столбцами для разделения DateTime

Я получаю сообщение об ошибке при попытке создать внешнюю таблицу с вычисляемым столбцом на основе столбца 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'.

Как я могу решить эту проблему? У меня есть теория, что, возможно, это не поддерживается через внешнюю таблицу? Если есть способ реализации, есть ли предложения?


person Techno04335    schedule 02.04.2018    source источник


Ответы (1)


Внешние таблицы хранилища данных SQL Azure не поддерживают вычисляемые столбцы. Однако вы можете создать представление сверху, чтобы служить той же цели, например

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

NB DATEPART параметры не берутся в кавычки, поэтому я исправил ваш пример.

person wBob    schedule 02.04.2018
comment
Спасибо за информацию! - person Techno04335; 03.04.2018