Есть текстовый файл, из него нужно получить строку - первое вхождение содержащее DmpKey, от которого берется hashdiff(в данном случае DateStock_DmpKey пометил в тексте файла)
SELECT
ds.DateStock_DmpKey,
ds.Location_DmpKey,
ds.Item_DmpKey,
ds.Date_DmpKey,
ds.LoadDTM,
ds.RecSrc,
ds.SnapshotDT
FROM (
SELECT
HASH('DateStock*' || ds.Location_BizKey || '*' || ds.Item_BizKey || '*' || ds.Date_DmpKey) AS DateStock_DmpKey(это он) ,
HASH(ds.Location_BizKey) AS Location_DmpKey,
HASH(ds.Item_BizKey) AS Item_DmpKey,
ds.Date_DmpKey,
'{{ macros.datetime.now() }}' AS LoadDTM,
'naCitilink*Irk' AS RecSrc,
'{{ ds }}' AS SnapshotDT
FROM (
SELECT
'Location*naCitilink*Irk*' || CAST(stg."Location Code" AS varchar(40)) AS Location_BizKey,
'Item*naCitilink*' || CAST(stg."Item no_" AS varchar(100)) AS Item_BizKey,
to_char(DateP, 'YYYYMMDD')::int AS Date_DmpKey
FROM Stage.STG_Ctl_IRK_Date_Stock stg
WHERE
-- catchup_snapshotdt_start
stg.SnapshotDT = '{{ ds }}'
-- catchup_snapshotdt_end
LIMIT 1 OVER (PARTITION BY stg.DateP, stg."Location Code", stg."Item no_" ORDER BY stg.LoadDTM DESC)
) AS ds
) AS ds
LEFT JOIN RawVault.RV_Lnk_DateStock tgt
ON tgt.DateStock_DmpKey = ds.DateStock_DmpKey
AND tgt.RecSrc = ds.RecSrc
WHERE tgt.DateStock_DmpKey IS NULL;
Такое регулярное выражение работает -
(?<=HASH\(.*\)\s+AS\s+).+_DmpKey
, но здесь выходит ошибка
look-behind requires fixed-width pattern
надо избавиться от неопределенного количества символов в выражении с ?<=