Вставить запись в таблицу impala на основе типа данных и имени столбца

У меня есть таблица impala, формат которой такой.

+--------------------------+-----------+---------+
| name                     | type      | comment |
+--------------------------+-----------+---------+
| col_key                   | bigint    |         |
| col_cd                    | smallint  |         |
| col_desc                  | string    |         |
| col_type_cd               | string    |         |
| col_scheme_cd             | string    |         |
| name                      | string    |         |
| source_cd                 | string    |         |
| source_cd1                | bigint    |         |
| load_dt                   | timestamp |         |
| effective_start_dt        | timestamp |         |
| effective_end_dt          | timestamp |         |
+--------------------------+-----------+---------+

Мне нужно вставить такое значение

Если тип данных

bigint then insert      0
smallint then insert    0
decimal then  insert    0.0
float then insert       0.0
string then insert      unknown
timestamp then insert   1970-01-01 00:00:00

и если имя столбца

effective_start_dt then insert 1970-01-01 00:00:00
effective_end_dt then insert   3499-12-31 00:00:00

Я нашел одно решение, в котором я могу определить тип данных и на его основе вставить запись, но оно не работает для моего второго условия, когда я вставляю запись на основе имени столбца и вставляю вставку 1970-01-01 00:00:00 vale для effective_end_dt тоже.

Ищите помощи в этом. Положение столбца может отличаться для других таблиц, поэтому я пробую какое-то общее решение. Я пытаюсь добиться этого решения из сценария оболочки.


person Sandeep Singh    schedule 24.02.2016    source источник


Ответы (1)


Вам нужно указать строку как временную метку

cast("1979-01-01 00:00:00" as timestamp)
person Nick Burns    schedule 25.02.2016