我正在使用胶水作业来写数据管道。我从社区获取了代码,如下所示:
WITH YOUR_TABLE (EMP_ID,
DATETIME_OF_MOVEMENT,
CITY,
RANK_)
AS (SELECT 2258325,
'1/18/2020 5:37',
'London',
1
FROM DUAL
UNION ALL
SELECT 2258325,
'1/19/2020 11:01',
'Manchester',
2
FROM DUAL
UNION ALL
SELECT 2258325,
'1/20/2020 15:06',
'London',
3
FROM DUAL
UNION ALL
SELECT 2656700,
'1/20/2020 23:59',
'London',
1
FROM DUAL
UNION ALL
SELECT 2656700,
'1/21/2020 6:48',
'Manchester',
2
FROM DUAL
UNION ALL
SELECT 2656700,
'1/21/2020 6:48',
'Liverpool',
3
FROM DUAL
UNION ALL
SELECT 2656700,
'1/26/2020 10:47',
'London',
4
FROM DUAL
UNION ALL
SELECT 6631583,
'1/18/2020 18:00',
'London',
1
FROM DUAL
UNION ALL
SELECT 6631583,
'1/19/2020 14:25',
'Manchester',
2
FROM DUAL
UNION ALL
SELECT 6631583,
'1/20/2020 8:53',
'Liverpool',
3
FROM DUAL
UNION ALL
SELECT 6631583,
'1/20/2020 14:48',
'Manchester',
4
FROM DUAL
UNION ALL
SELECT 6631583,
'1/21/2020 11:34',
'London',
5
FROM DUAL
UNION ALL
SELECT 6631583,
'1/22/2020 14:48',
'Manchester',
6
FROM DUAL
UNION ALL
SELECT 6631583,
'1/24/2020 11:34',
'London',
7
FROM DUAL) -- YOUR QUERY STARTS FROM HERE SELECT EMP_ID,
MAX (CASE WHEN MINRN = RANK_ THEN DATETIME_OF_MOVEMENT END)
AS first_movement,
MAX (CASE WHEN MINRN = RANK_ THEN CITY END) AS first_CITY,
MAX (CASE WHEN MINRN + 1 = RANK_ THEN DATETIME_OF_MOVEMENT END)
AS SECOND_movement,
MAX (CASE WHEN MINRN + 1 = RANK_ THEN CITY END) AS SECOND_CITY,
MAX (CASE WHEN MAXRN = RANK_ THEN DATETIME_OF_MOVEMENT END)
AS THIRD_movement,
MAX (CASE WHEN MAXRN = RANK_ THEN CITY END) AS THIRD_CITY
FROM (SELECT T.*,
MAX (CASE WHEN CITY = 'London' THEN RANK_ END)
OVER (PARTITION BY EMP_ID)
AS MAXRN,
MIN (CASE WHEN CITY = 'London' THEN RANK_ END)
OVER (PARTITION BY EMP_ID)
AS MINRN
FROM YOUR_TABLE T) WHERE MAXRN - MINRN > 1 GROUP BY EMP_ID;
但是运行代码后,我得到了 net.snowflake.client.jdbc.SnowflakeSQLException:SQL编译错误:表'NM_TEMP_STAGING_1100952600'不存在
请让我知道我是否有任何遗漏。 我具有权限,用于创建,选择阶段,创建,选择表和创建将来的表。 上面的代码中,我删除了列和映射。但可以使用原始代码。
答案 0 :(得分:0)
resolvechoice4.toDF().write.format(SNOWFLAKE_SOURCE_NAME).options(**sfOptions).option("preactions","USE DATABASE dev_lz").option("dbtable", "nm_temp").mode("overwrite").save()
在上面的dbtable选项中添加了以下内容,它开始工作
.option("preactions","USE ROLE DEVELOPER;USE DATABASE dev_db;USE SCHEMA aws_test")
如下
resolvechoice4.toDF().write.format(SNOWFLAKE_SOURCE_NAME).options(**sfOptions).option("preactions","USE DATABASE dev_lz").option("preactions","USE ROLE DEVELOPER;USE DATABASE dev_db;USE SCHEMA aws_test").option("dbtable", "nm_temp").mode("overwrite").save()