Получение ошибки при запуске sql-скрипта в ADW

Получаю сообщение об ошибке следующего вида:
Оператор вставки значений может содержать только постоянные литеральные значения или ссылки на переменные.

это утверждения, в которых я получаю ошибки:

INSERT INTO val.summary_numbers (metric_name, metric_val, dt_create) VALUES ('Total IP Enconters',
                                                                             (SELECT
                                                                                count(DISTINCT encounter_id)
                                                                              FROM prod.encounter
                                                                              WHERE encounter_type = 'Inpatient')

                                                                             ,
                                                                                (SELECT min(mod_loadidentifier)
                                                                                 FROM ccsm.stg_demographics_baseline)

                                                                             );


INSERT INTO val.summary_numbers (metric_name, metric_val, dt_create) VALUES ('Total 30d Readmits',
                                                                  (SELECT
                                                                     count(DISTINCT encounter_id)
                                                                   FROM prod.encounter_attr
                                                                   WHERE
                                                                     attr_name = 'day_30_readmit' AND attr_value = 1)

                                                                  ,
                                                                     (SELECT min(mod_loadidentifier)
                                                                      FROM ccsm.stg_demographics_baseline));

person Dead Man    schedule 12.06.2018    source источник


Ответы (2)


Измените свой запрос следующим образом:

insert into val.summary_numbers
select
        'Total IP Enconters',
        (select  count(distinct encounter_id)
         from    prod.encounter
         where   encounter_type = 'Inpatient'),
        (select  min(mod_loadidentifier)
         from    ccsm.stg_demographics_baseline)
person Ron Dunn    schedule 12.06.2018
comment
Когда я использую вышеуказанное, я получаю ошибку синтаксического анализа рядом с оператором - person Dead Man; 12.06.2018
comment
@DeadMan исправил скобку. Попробуй снова - person GregGalloway; 13.06.2018

При использовании службы ADW я бы рекомендовал вам рассмотреть возможность использования CTAS операция, возможно, в сочетании с ПЕРЕИМЕНОВАТЬ. RENAME - это операция с метаданными, поэтому она выполняется быстро, а CTAS параллельна, а INSERT INTO будет построчно.

У вас все еще может быть проблема, связанная с данными, которую сложно определить без использования оператора create table.

Спасибо

person Allan Miller    schedule 12.06.2018