Вставить столбец метки времени в столбец скандата? - PullRequest
0 голосов
/ 24 мая 2019

Я хочу вставить столбец отметки времени в значения столбца ScanDate со значениями Null.

Мне нужно использовать это в таблице, и если я сохраняю значения separetade, я получаю неправильные результаты

select distinct A.RootDocId, A.LastEventAppId, A.LastEventStatus, 
        case when B.Value = '' then A.Timestamp else 
        PARSE_TIMESTAMP('%d/%m/%Y %H:%M:%S', 
replace(regexp_replace(B.Value, '[/-]1([7-9]) ', '/201\\1 '), '-', '/'))
        end ScanDate, C.Value Federation, A.timestamp 
from `moonoia-bpo-run.dam.documentroot` A 
left join unnest(Metadata) B ON B.Key like 'ScanDate' 
left join unnest(Metadata) C ON C.Key like '%ederation'
        limit 100

Я ожидал этого:

enter image description here

Если Scandate равен null, его следует заменить на timestamp.

Ответы [ 3 ]

3 голосов
/ 24 мая 2019

Попробуйте это:

select RoodDocId,
       LastEventAppId,
       LastEventStatus,
       coalesce(ScanDate, timestamp),
       Federation,
       timestamp
from (
    -- here your whole query that you have
) a
2 голосов
/ 24 мая 2019

Если Scandate имеет значение null, его следует заменить временной меткой

Вы должны использовать COALESCE function

как COALESCE(Scandate, timestamp)

Или вы можете просто «исправить» свой запрос (B.Value = '' -> IFNULL(B.Value, '') = ''), как показано ниже

select distinct A.RootDocId, A.LastEventAppId, A.LastEventStatus, 
        case when IFNULL(B.Value, '') = '' then A.Timestamp else 
        PARSE_TIMESTAMP('%d/%m/%Y %H:%M:%S', 
replace(regexp_replace(B.Value, '[/-]1([7-9]) ', '/201\\1 '), '-', '/'))
        end ScanDate, C.Value Federation, A.timestamp 
from `moonoia-bpo-run.dam.documentroot` A 
left join unnest(Metadata) B ON B.Key like 'ScanDate' 
left join unnest(Metadata) C ON C.Key like '%ederation'
        limit 100
0 голосов
/ 27 мая 2019

Обычно лучше использовать Tableau для моделирования ваших связей (объединений) в источнике данных Tableau и позволить инструменту генерировать оптимизированный SQL для вашей конкретной визуализации.Если вы пишете свой собственный SQL, Tableau, конечно, будет уважать его, но не будет пытаться оптимизировать его.

Почти все, что вы будете делать в основном SQL, доступно в Tableau, не прибегая к написанному вручную SQL, если вы решитеисследовать этот маршрут.Эквивалент вычисления таблицы для Coalesce () SQL называется IF_NULL ().

...