Snowflake SQL MERGE语句执行成功,但在过程中失败



我有一个雪花MERGE语句,它自己可以成功执行,但当我将它封装在过程中时,它会抱怨其中一列"无效标识符";。

这是我的SQL语句:

MERGE INTO WAREHOUSE.ART_TWITTER_TRANSACTION_FACT t 
USING (
with artist_twitter as  
(select lower(trim(twitter_handle_1)) as twitter_handle, twitter_id_1 as twitter_id 
from warehouse.artist_dim
where twitter_id_1 is not null 
and twitter_handle_1 is not null
and twitter_id_1 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_1)), twitter_id_1
union 
select lower(trim(twitter_handle_2)) as twitter_handle, twitter_id_2 as twitter_id 
from warehouse.artist_dim
where twitter_id_2 is not null 
and twitter_handle_2 is not null
and twitter_id_2 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_2)), twitter_id_2
union  
select lower(trim(twitter_handle_3)) as twitter_handle, twitter_id_3 as twitter_id 
from warehouse.artist_dim
where twitter_id_3 is not null 
and twitter_handle_3 is not null
and twitter_id_3 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_3)), twitter_id_3
union  
select lower(trim(twitter_handle_4)) as twitter_handle, twitter_id_4 as twitter_id 
from warehouse.artist_dim
where twitter_id_4 is not null 
and twitter_handle_4 is not null
and twitter_id_4 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_4)), twitter_id_4
union  
select lower(trim(twitter_handle_5)) as twitter_handle, twitter_id_5 as twitter_id 
from warehouse.artist_dim
where twitter_id_5 is not null 
and twitter_handle_5 is not null
and twitter_id_5 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_5)), twitter_id_5

)
, count_artist_by_twitter_handle as  
(  
select trim(a.twitter_handle) as twitter_handle, count(distinct b.artist_name) as unique_artists
from artist_twitter a
inner join warehouse.artist_dim b 
on a.twitter_handle = b.twitter_handle_1 
or a.twitter_handle = b.twitter_handle_2 
or a.twitter_handle = b.twitter_handle_3 
or a.twitter_handle = b.twitter_handle_4 
or a.twitter_handle = b.twitter_handle_5 
where b.twitter_filter_flag = 1
group by trim(a.twitter_handle)
)
, count_art_by_artist as  
(  
select a.artist_name
, lower(trim(c.twitter_handle)) as twitter_handle
, count(distinct a.collection_contract_uid || '-' || a.collection_item_id) as unique_art
, row_number() over (partition by lower(trim(c.twitter_handle)) order by unique_art desc) as rank
from warehouse.art_dim a 
inner join warehouse.artist_dim b 
on a.artist_name = b.artist_name
inner join artist_twitter c 
on (c.twitter_handle = b.twitter_handle_1 
or c.twitter_handle = b.twitter_handle_2 
or c.twitter_handle = b.twitter_handle_3 
or c.twitter_handle = b.twitter_handle_4 
or c.twitter_handle = b.twitter_handle_5 )
group by a.artist_name, lower(trim(c.twitter_handle))
order by lower(trim(c.twitter_handle)), rank
)
, pick_ranked_artist as  
(  
select 
artist_name 
,twitter_handle 
from count_art_by_artist
where rank = 1
)
, twitter_handle_artist_cnt_ranked as  
(select a.twitter_handle, a.unique_artists, 
case when b.artist_name is not null then b.artist_name 
else c.artist_name end artist_name
from count_artist_by_twitter_handle a 
left join pick_ranked_artist b 
on a.twitter_handle = b.twitter_handle
left join (select twitter_handle_1 as twitter_handle, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_1 is not null
union  
select twitter_handle_2, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_2 is not null
union  
select twitter_handle_3, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_3 is not null
union  
select twitter_handle_4, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_4 is not null
union  
select twitter_handle_5, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_5 is not null
) c 
on a.twitter_handle = c.twitter_handle
)
, artist_twitter_associations as 
(select 
a.tweet_id 
,a.tweet_conversation_id
,a.twitter_author_id
,b.twitter_id 
,b.twitter_handle
,c.artist_name
,a.tweet_url 
,a.tweet_expanded_url
,a.tweet_display_url
,a.tweet_unwound_url
,a.tweet_text 
,a.tweet_url_status
,a.tweet_url_title
,a.tweet_url_description
,a.tweet_public_retweet_count
,a.tweet_public_reply_count
,a.tweet_public_like_count
,a.tweet_public_quote_count
,a.as_of_datetime
,a.tweet_date
,row_number() over (partition by a.tweet_id order by a.as_of_datetime desc) as rank
from stage.twitter_tweet_history a 
left join artist_twitter b 
on a.twitter_author_id = b.twitter_id 
left join twitter_handle_artist_cnt_ranked c 
on b.twitter_handle = c.twitter_handle
group by  
a.tweet_id 
,a.tweet_conversation_id
,a.twitter_author_id
,b.twitter_id 
,b.twitter_handle
,c.artist_name
,a.tweet_url 
,a.tweet_expanded_url
,a.tweet_display_url
,a.tweet_unwound_url
,a.tweet_text 
,a.tweet_url_status
,a.tweet_url_title
,a.tweet_url_description
,a.tweet_public_retweet_count
,a.tweet_public_reply_count
,a.tweet_public_like_count
,a.tweet_public_quote_count
,a.as_of_datetime
,a.tweet_date
) 
,ranked_tweet_associations as  
(
select 
tweet_id 
,tweet_conversation_id
,twitter_author_id
,twitter_id 
,twitter_handle
,artist_name
,tweet_url 
,tweet_expanded_url
,tweet_display_url
,tweet_unwound_url
,tweet_text 
,tweet_url_status
,tweet_url_title
,tweet_url_description
,tweet_public_retweet_count
,tweet_public_reply_count
,tweet_public_like_count
,tweet_public_quote_count
,as_of_datetime
,tweet_date
from artist_twitter_associations 
where rank = 1
)
, derive_link_info as  
(select  tweet_id, twitter_author_id, twitter_handle, artist_name,
as_of_datetime, tweet_date,
case when tweet_unwound_url is null  
then tweet_expanded_url 
else tweet_unwound_url end as url_to_parse
from ranked_tweet_associations
)
, split_url as  
(   
select tweet_id, twitter_author_id, twitter_handle, artist_name
, as_of_datetime, tweet_date
, url_to_parse
, split_part(url_to_parse, '/', 0) as site_url_0
, split_part(url_to_parse, '/', 1) as site_url_1
, split_part(url_to_parse, '/', 2) as site_url_2
, split_part(url_to_parse, '/', 3) as site_url_3
, split_part(url_to_parse, '/', 4) as site_url_4
, split_part(url_to_parse, '/', 5) as site_url_5
, split_part(url_to_parse, '/', 6) as site_url_6
, split_part(url_to_parse, '/', 7) as site_url_7
, case when site_url_3 = 'niftygateway.com'
then 'nifty'
else 'other' end as site 
, case when site = 'nifty' and site_url_4 = 'collections'
then site_url_5 
when site = 'nifty' and site_url_4 = 'profile'
then site_url_5 
when site = 'nifty' and site_url_4 = 'itemdetail'
then site_url_6 
else 'Other'
end as artist_info
from derive_link_info
)
,identify_art_or_artist as  
(  
select a.tweet_id
, a1.tweet_conversation_id
, a.twitter_author_id
, a.twitter_handle
, a.artist_name as tweet_artist_name
, a.as_of_datetime
, a.tweet_date
, a1.tweet_text
, a1.tweet_public_retweet_count 
, a1.tweet_public_reply_count
, a1.tweet_public_like_count 
, a1.tweet_public_quote_count
,a1.tweet_url
,a1.tweet_expanded_url
,a1.tweet_display_url
,a1.tweet_unwound_url
,a1.tweet_url_status
,a1.tweet_url_title
,a1.tweet_url_description  
, a.url_to_parse
, a.site_url_4
, a.site_url_5
, a.site_url_6
, a.site_url_7
, a.site 
, case when a.site = 'nifty'
then  
case when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'primary'
then b.artist_name 
when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'secondary'
then c.artist_name
when a.site_url_4 = 'profile' 
then a.site_url_5 
when a.site_url_4 = 'collections'
then d.artist_name
end
else 'Other' end as art_artist_name
, case when a.site = 'nifty'
then case when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'primary'
then b.collection_contract_uid 
when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'secondary'
then c.collection_contract_uid
when a.site_url_4 = 'profile' 
then 'None' 
when a.site_url_4 = 'collections'
then 'None'
end
else 'None' end as collection_contract_uid 
, case when a.site = 'nifty'
then case when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'primary'
then b.collection_item_id 
when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'secondary'
then 'None'
when a.site_url_4 = 'profile' 
then 'None' 
when a.site_url_4 = 'collections'
then 'None'
end
else 'None' end as collection_item_id
, case when a.site = 'nifty'
then case when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'primary'
then 'None' 
when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'secondary'
then a.site_url_7
when a.site_url_4 = 'profile' 
then 'None' 
when a.site_url_4 = 'collections'
then 'None'
end
else 'None' end as token_id             

from split_url a 
inner join ranked_tweet_associations a1 
on a.tweet_id = a1.tweet_id
left join warehouse.art_dim b 
on a.site_url_6 = b.collection_contract_uid 
and a.site_url_7 = b.collection_item_id
left join ( select collection_contract_uid, artist_name
from warehouse.art_dim 
group by collection_contract_uid, artist_name) c 
on a.site_url_6 = c.collection_contract_uid 
left join (select artist_name from warehouse.art_dim 
group by artist_name) d 
on a.site_url_5 = d.artist_name
)
select  
a.tweet_id 
,a.collection_contract_uid 
,a.collection_item_id 
,a.token_id
,a.tweet_artist_name 
,a.twitter_handle as tweet_twitter_handle
,a.art_artist_name 
,NVL(b.art_name,'None') as art_name
,a.tweet_text
,a.tweet_conversation_id
,a.twitter_author_id
,a.tweet_date
,a.tweet_public_retweet_count
,a.tweet_public_reply_count
,a.tweet_public_like_count
,a.tweet_public_quote_count
,a.tweet_url
,a.tweet_expanded_url
,a.tweet_display_url
,a.tweet_unwound_url
,a.tweet_url_status
,a.tweet_url_title
,a.tweet_url_description
,a.as_of_datetime 
,current_timestamp
from identify_art_or_artist a
left join warehouse.art_dim b 
on a.collection_contract_uid = b.collection_contract_uid
and a.collection_item_id = b.collection_item_id
) s 
ON s.tweet_id = t.tweet_id 
AND s.collection_contract_uid = t.collection_contract_uid
AND s.collection_item_id = t.collection_item_id
AND s.token_id = t.token_id
AND s.tweet_artist_name = t.tweet_artist_name
AND s.tweet_twitter_handle = t.tweet_twitter_handle
AND s.art_artist_name = t.art_artist_name
AND NVL(s.art_name,'None') = NVL(t.art_name,'None')
AND s.tweet_text = t.tweet_text
AND s.tweet_conversation_id = t.tweet_conversation_id
AND s.twitter_author_id = t.twitter_author_id
AND s.tweet_date = t.tweet_date 
AND NVL(s.tweet_url,'x') = NVL(t.tweet_url,'x')
AND NVL(s.tweet_expanded_url,'x') = NVL(t.tweet_expanded_url,'x') 
AND NVL(s.tweet_display_url,'x') = NVL(t.tweet_display_url,'x') 
AND NVL(s.tweet_unwound_url,'x') = NVL(t.tweet_unwound_url,'x') 
AND NVL(s.tweet_url_status,'x') = NVL(t.tweet_url_status,'x') 
AND NVL(s.tweet_url_title,'x') = NVL(t.tweet_url_title,'x') 
AND NVL(s.tweet_url_description,'x') = NVL(t.tweet_url_description,'x') 
AND s.tweet_public_retweet_count = t.tweet_public_retweet_count
AND s.tweet_public_reply_count = t.tweet_public_reply_count
AND s.tweet_public_like_count = t.tweet_public_like_count
AND s.tweet_public_quote_count = t.tweet_public_quote_count
WHEN NOT MATCHED THEN INSERT 
(
tweet_id 
,collection_contract_uid 
,collection_item_id 
,token_id
,tweet_artist_name 
,tweet_twitter_handle
,art_artist_name 
,art_name
,tweet_text
,tweet_conversation_id
,twitter_author_id
,tweet_date
,tweet_public_retweet_count
,tweet_public_reply_count
,tweet_public_like_count
,tweet_public_quote_count
,tweet_url
,tweet_expanded_url
,tweet_display_url
,tweet_unwound_url
,tweet_url_status
,tweet_url_title
,tweet_url_description
,as_of_datetime 
,insert_date
)
VALUES
(s.tweet_id 
,s.collection_contract_uid 
,s.collection_item_id 
,s.token_id
,s.tweet_artist_name 
,s.tweet_twitter_handle
,s.art_artist_name 
,s.art_name
,s.tweet_text 
,s.tweet_conversation_id
,s.twitter_author_id 
,s.tweet_date 
,s.tweet_public_retweet_count
,s.tweet_public_reply_count
,s.tweet_public_like_count
,s.tweet_public_quote_count
,s.tweet_url 
,s.tweet_expanded_url
,s.tweet_display_url
,s.tweet_unwound_url
,s.tweet_url_status
,s.tweet_url_title
,s.tweet_url_description
,s.as_of_datetime
,current_timestamp)
;

这与程序中的陈述完全相同:

create or replace procedure NFT_DEV_DB.WAREHOUSE.load_art_twitter_transaction_fact()
returns string 
language javascript
execute as owner
as
$$
// Construct the merge sql statement  
// Snowflake currently only supports a single sql statement execution in a procedure.
//     Due to this limitation, sql updates and inserts must be formatted as a merge statement.
// This procedure loads new or changed tweets from landing.twitter_tweet_changes to stage.twitter_tweet_history.
//      It will check each field for changes so if a tweet comes through on multiple twitter pulls it will only 
//      be inserted if there is something different since the last pull of that record.
var sql_command = 
`
MERGE INTO WAREHOUSE.ART_TWITTER_TRANSACTION_FACT t 
USING (
with artist_twitter as  
(select lower(trim(twitter_handle_1)) as twitter_handle, twitter_id_1 as twitter_id 
from warehouse.artist_dim
where twitter_id_1 is not null 
and twitter_handle_1 is not null
and twitter_id_1 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_1)), twitter_id_1
union 
select lower(trim(twitter_handle_2)) as twitter_handle, twitter_id_2 as twitter_id 
from warehouse.artist_dim
where twitter_id_2 is not null 
and twitter_handle_2 is not null
and twitter_id_2 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_2)), twitter_id_2
union  
select lower(trim(twitter_handle_3)) as twitter_handle, twitter_id_3 as twitter_id 
from warehouse.artist_dim
where twitter_id_3 is not null 
and twitter_handle_3 is not null
and twitter_id_3 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_3)), twitter_id_3
union  
select lower(trim(twitter_handle_4)) as twitter_handle, twitter_id_4 as twitter_id 
from warehouse.artist_dim
where twitter_id_4 is not null 
and twitter_handle_4 is not null
and twitter_id_4 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_4)), twitter_id_4
union  
select lower(trim(twitter_handle_5)) as twitter_handle, twitter_id_5 as twitter_id 
from warehouse.artist_dim
where twitter_id_5 is not null 
and twitter_handle_5 is not null
and twitter_id_5 <> '0'
and twitter_filter_flag = 1
group by 
lower(trim(twitter_handle_5)), twitter_id_5

)
, count_artist_by_twitter_handle as  
(  
select trim(a.twitter_handle) as twitter_handle, count(distinct b.artist_name) as unique_artists
from artist_twitter a
inner join warehouse.artist_dim b 
on a.twitter_handle = b.twitter_handle_1 
or a.twitter_handle = b.twitter_handle_2 
or a.twitter_handle = b.twitter_handle_3 
or a.twitter_handle = b.twitter_handle_4 
or a.twitter_handle = b.twitter_handle_5 
where b.twitter_filter_flag = 1
group by trim(a.twitter_handle)
)
, count_art_by_artist as  
(  
select a.artist_name
, lower(trim(c.twitter_handle)) as twitter_handle
, count(distinct a.collection_contract_uid || '-' || a.collection_item_id) as unique_art
, row_number() over (partition by lower(trim(c.twitter_handle)) order by unique_art desc) as rank
from warehouse.art_dim a 
inner join warehouse.artist_dim b 
on a.artist_name = b.artist_name
inner join artist_twitter c 
on (c.twitter_handle = b.twitter_handle_1 
or c.twitter_handle = b.twitter_handle_2 
or c.twitter_handle = b.twitter_handle_3 
or c.twitter_handle = b.twitter_handle_4 
or c.twitter_handle = b.twitter_handle_5 )
group by a.artist_name, lower(trim(c.twitter_handle))
order by lower(trim(c.twitter_handle)), rank
)
, pick_ranked_artist as  
(  
select 
artist_name 
,twitter_handle 
from count_art_by_artist
where rank = 1
)
, twitter_handle_artist_cnt_ranked as  
(select a.twitter_handle, a.unique_artists, 
case when b.artist_name is not null then b.artist_name 
else c.artist_name end artist_name
from count_artist_by_twitter_handle a 
left join pick_ranked_artist b 
on a.twitter_handle = b.twitter_handle
left join (select twitter_handle_1 as twitter_handle, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_1 is not null
union  
select twitter_handle_2, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_2 is not null
union  
select twitter_handle_3, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_3 is not null
union  
select twitter_handle_4, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_4 is not null
union  
select twitter_handle_5, artist_name from warehouse.artist_dim
where artist_type = 'NON-ARTIST'
and twitter_handle_5 is not null
) c 
on a.twitter_handle = c.twitter_handle
)
, artist_twitter_associations as 
(select 
a.tweet_id 
,a.tweet_conversation_id
,a.twitter_author_id
,b.twitter_id 
,b.twitter_handle
,c.artist_name
,a.tweet_url 
,a.tweet_expanded_url
,a.tweet_display_url
,a.tweet_unwound_url
,a.tweet_text 
,a.tweet_url_status
,a.tweet_url_title
,a.tweet_url_description
,a.tweet_public_retweet_count
,a.tweet_public_reply_count
,a.tweet_public_like_count
,a.tweet_public_quote_count
,a.as_of_datetime
,a.tweet_date
,row_number() over (partition by a.tweet_id order by a.as_of_datetime desc) as rank
from stage.twitter_tweet_history a 
left join artist_twitter b 
on a.twitter_author_id = b.twitter_id 
left join twitter_handle_artist_cnt_ranked c 
on b.twitter_handle = c.twitter_handle
group by  
a.tweet_id 
,a.tweet_conversation_id
,a.twitter_author_id
,b.twitter_id 
,b.twitter_handle
,c.artist_name
,a.tweet_url 
,a.tweet_expanded_url
,a.tweet_display_url
,a.tweet_unwound_url
,a.tweet_text 
,a.tweet_url_status
,a.tweet_url_title
,a.tweet_url_description
,a.tweet_public_retweet_count
,a.tweet_public_reply_count
,a.tweet_public_like_count
,a.tweet_public_quote_count
,a.as_of_datetime
,a.tweet_date
) 
,ranked_tweet_associations as  
(
select 
tweet_id 
,tweet_conversation_id
,twitter_author_id
,twitter_id 
,twitter_handle
,artist_name
,tweet_url 
,tweet_expanded_url
,tweet_display_url
,tweet_unwound_url
,tweet_text 
,tweet_url_status
,tweet_url_title
,tweet_url_description
,tweet_public_retweet_count
,tweet_public_reply_count
,tweet_public_like_count
,tweet_public_quote_count
,as_of_datetime
,tweet_date
from artist_twitter_associations 
where rank = 1
)
, derive_link_info as  
(select  tweet_id, twitter_author_id, twitter_handle, artist_name,
as_of_datetime, tweet_date,
case when tweet_unwound_url is null  
then tweet_expanded_url 
else tweet_unwound_url end as url_to_parse
from ranked_tweet_associations
)
, split_url as  
(   
select tweet_id, twitter_author_id, twitter_handle, artist_name
, as_of_datetime, tweet_date
, url_to_parse
, split_part(url_to_parse, '/', 0) as site_url_0
, split_part(url_to_parse, '/', 1) as site_url_1
, split_part(url_to_parse, '/', 2) as site_url_2
, split_part(url_to_parse, '/', 3) as site_url_3
, split_part(url_to_parse, '/', 4) as site_url_4
, split_part(url_to_parse, '/', 5) as site_url_5
, split_part(url_to_parse, '/', 6) as site_url_6
, split_part(url_to_parse, '/', 7) as site_url_7
, case when site_url_3 = 'niftygateway.com'
then 'nifty'
else 'other' end as site 
, case when site = 'nifty' and site_url_4 = 'collections'
then site_url_5 
when site = 'nifty' and site_url_4 = 'profile'
then site_url_5 
when site = 'nifty' and site_url_4 = 'itemdetail'
then site_url_6 
else 'Other'
end as artist_info
from derive_link_info
)
,identify_art_or_artist as  
(  
select a.tweet_id
, a1.tweet_conversation_id
, a.twitter_author_id
, a.twitter_handle
, a.artist_name as tweet_artist_name
, a.as_of_datetime
, a.tweet_date
, a1.tweet_text
, a1.tweet_public_retweet_count 
, a1.tweet_public_reply_count
, a1.tweet_public_like_count 
, a1.tweet_public_quote_count
,a1.tweet_url
,a1.tweet_expanded_url
,a1.tweet_display_url
,a1.tweet_unwound_url
,a1.tweet_url_status
,a1.tweet_url_title
,a1.tweet_url_description  
, a.url_to_parse
, a.site_url_4
, a.site_url_5
, a.site_url_6
, a.site_url_7
, a.site 
, case when a.site = 'nifty'
then  
case when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'primary'
then b.artist_name 
when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'secondary'
then c.artist_name
when a.site_url_4 = 'profile' 
then a.site_url_5 
when a.site_url_4 = 'collections'
then d.artist_name
end
else 'Other' end as art_artist_name
, case when a.site = 'nifty'
then case when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'primary'
then b.collection_contract_uid 
when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'secondary'
then c.collection_contract_uid
when a.site_url_4 = 'profile' 
then 'None' 
when a.site_url_4 = 'collections'
then 'None'
end
else 'None' end as collection_contract_uid 
, case when a.site = 'nifty'
then case when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'primary'
then b.collection_item_id 
when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'secondary'
then 'None'
when a.site_url_4 = 'profile' 
then 'None' 
when a.site_url_4 = 'collections'
then 'None'
end
else 'None' end as collection_item_id
, case when a.site = 'nifty'
then case when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'primary'
then 'None' 
when a.site_url_4 = 'itemdetail' and a.site_url_5 = 'secondary'
then a.site_url_7
when a.site_url_4 = 'profile' 
then 'None' 
when a.site_url_4 = 'collections'
then 'None'
end
else 'None' end as token_id             

from split_url a 
inner join ranked_tweet_associations a1 
on a.tweet_id = a1.tweet_id
left join warehouse.art_dim b 
on a.site_url_6 = b.collection_contract_uid 
and a.site_url_7 = b.collection_item_id
left join ( select collection_contract_uid, artist_name
from warehouse.art_dim 
group by collection_contract_uid, artist_name) c 
on a.site_url_6 = c.collection_contract_uid 
left join (select artist_name from warehouse.art_dim 
group by artist_name) d 
on a.site_url_5 = d.artist_name
)
select  
a.tweet_id 
,a.collection_contract_uid 
,a.collection_item_id 
,a.token_id
,a.tweet_artist_name 
,a.twitter_handle as tweet_twitter_handle
,a.art_artist_name 
,NVL(b.art_name,'None') as art_name
,a.tweet_text
,a.tweet_conversation_id
,a.twitter_author_id
,a.tweet_date
,a.tweet_public_retweet_count
,a.tweet_public_reply_count
,a.tweet_public_like_count
,a.tweet_public_quote_count
,a.tweet_url
,a.tweet_expanded_url
,a.tweet_display_url
,a.tweet_unwound_url
,a.tweet_url_status
,a.tweet_url_title
,a.tweet_url_description
,a.as_of_datetime 
,current_timestamp
from identify_art_or_artist a
left join warehouse.art_dim b 
on a.collection_contract_uid = b.collection_contract_uid
and a.collection_item_id = b.collection_item_id
) s 
ON s.tweet_id = t.tweet_id 
AND s.collection_contract_uid = t.collection_contract_uid
AND s.collection_item_id = t.collection_item_id
AND s.token_id = t.token_id
AND s.tweet_artist_name = t.tweet_artist_name
AND s.tweet_twitter_handle = t.tweet_twitter_handle
AND s.art_artist_name = t.art_artist_name
AND NVL(s.art_name,'None') = NVL(t.art_name,'None')
AND s.tweet_text = t.tweet_text
AND s.tweet_conversation_id = t.tweet_conversation_id
AND s.twitter_author_id = t.twitter_author_id
AND s.tweet_date = t.tweet_date 
AND NVL(s.tweet_url,'x') = NVL(t.tweet_url,'x')
AND NVL(s.tweet_expanded_url,'x') = NVL(t.tweet_expanded_url,'x') 
AND NVL(s.tweet_display_url,'x') = NVL(t.tweet_display_url,'x') 
AND NVL(s.tweet_unwound_url,'x') = NVL(t.tweet_unwound_url,'x') 
AND NVL(s.tweet_url_status,'x') = NVL(t.tweet_url_status,'x') 
AND NVL(s.tweet_url_title,'x') = NVL(t.tweet_url_title,'x') 
AND NVL(s.tweet_url_description,'x') = NVL(t.tweet_url_description,'x') 
AND s.tweet_public_retweet_count = t.tweet_public_retweet_count
AND s.tweet_public_reply_count = t.tweet_public_reply_count
AND s.tweet_public_like_count = t.tweet_public_like_count
AND s.tweet_public_quote_count = t.tweet_public_quote_count
WHEN NOT MATCHED THEN INSERT 
(
tweet_id 
,collection_contract_uid 
,collection_item_id 
,token_id
,tweet_artist_name 
,tweet_twitter_handle
,art_artist_name 
,art_name
,tweet_text
,tweet_conversation_id
,twitter_author_id
,tweet_date
,tweet_public_retweet_count
,tweet_public_reply_count
,tweet_public_like_count
,tweet_public_quote_count
,tweet_url
,tweet_expanded_url
,tweet_display_url
,tweet_unwound_url
,tweet_url_status
,tweet_url_title
,tweet_url_description
,as_of_datetime 
,insert_date
)
VALUES
(s.tweet_id 
,s.collection_contract_uid 
,s.collection_item_id 
,s.token_id
,s.tweet_artist_name 
,s.tweet_twitter_handle
,s.art_artist_name 
,s.art_name
,s.tweet_text 
,s.tweet_conversation_id
,s.twitter_author_id 
,s.tweet_date 
,s.tweet_public_retweet_count
,s.tweet_public_reply_count
,s.tweet_public_like_count
,s.tweet_public_quote_count
,s.tweet_url 
,s.tweet_expanded_url
,s.tweet_display_url
,s.tweet_unwound_url
,s.tweet_url_status
,s.tweet_url_title
,s.tweet_url_description
,s.as_of_datetime
,current_timestamp)
;
`
var stmt = snowflake.createStatement(
{
sqlText: sql_command
}
);                    

try {
var result1 = stmt.execute();
result1.next();
return "Succeeded.";   // Return a success/error indicator.
}
catch (err)  {
return "Failed: " + err;   // Return a success/error indicator.
} 

$$
;

我以前运行过这个过程的另一个版本(类似的代码只是由于数据和字段的更改而进行了一些代码更改(,它运行得很好。我可能会遇到性格限制吗?我看不出这次失败的任何其他原因。

这是我收到的错误:

失败:SQL编译错误:错误行11位于位置12标识符"TWITTER_HANDLE"无效

所以我的解决方案是将所有CTE代码提取到一个视图中,并在USING之后引用该视图。这似乎有效,所以我想知道Snowflake是否对程序有某种性格限制。到目前为止,我在互联网上的搜索中还没有看到任何提及。所以,我想这个问题现在已经解决了。

最新更新