Создание видов и типов данных при красном смещении - PullRequest
0 голосов
/ 13 февраля 2019

Угадаю, что это прямо вперед, но не могу заставить его бежать.У меня возникла проблема с явной установкой типов данных столбца в представлении.

Мне нужно сделать это, так как я буду объединять его с другой таблицей и должен соответствовать типам этих таблиц.

Нижеэто код, который я пытался запустить (я пытался без sortkey, но все еще не запустился)

DROP VIEW IF EXISTS testing.test_view;

CREATE OR REPLACE VIEW testing.test_view;
(
channel VARCHAR(80) ENCODE zstd,
trans_date TIMESTAMP ENCODE zstd
)
SORTKEY
(
       trans_date
)

AS

SELECT channel,
      trans_date

        from (
SELECT to_date(date,'DD-MM-YYYY') as trans_date,channel
FROM testing.plan
group by date,  channel
)
group by trans_date,channel;

Сообщение об ошибке, которое я получаю:

Произошла ошибка, когдавыполнение команды SQL: CREATE ИЛИ ЗАМЕНА VIEW trading.trading_squads_plan_v_test (channel, trans_date)

AS

ВЫБРАТЬ канал VARCHAR (80) ENCODE zstd, trans_date TIM ...

Amazon Недопустимая операция: синтаксическая ошибка в «VARCHAR» или рядом с ним Позиция: 106;

Это проблема с представлениями, в которых нельзя установить типы данных?Если да, то есть ли обходной путь?

Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Как указал Джон, моей ошибкой была попытка установить тип данных на уровне представления, что невозможно, поскольку его можно извлечь только из таблицы.

Поэтому я приведу значения в вызове select изстол:

DROP VIEW IF EXISTS testing.test_view;

CREATE OR REPLACE VIEW testing.test_view;
(
channel,
trans_date,
source_region
)

AS

SELECT CAST(channel as varchar(80)),
       CAST(trans_date as timestamp),
       CAST(0 as varchar(80)) as source_region
        from (
SELECT to_date(date,'DD-MM-YYYY') as trans_date,channel
FROM testing.plan
group by date,  channel
)
group by trans_date,channel;
...