使用aws胶水和雪花获取表'NM_TEMP_STAGING_1100952600'不存在

时间:2020-01-29 07:14:44

标签: snowflake-cloud-data-platform

我正在使用胶水作业来写数据管道。我从社区获取了代码,如下所示:

 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'不存在

请让我知道我是否有任何遗漏。 我具有权限,用于创建,选择阶段,创建,选择表和创建将来的表。 上面的代码中,我删除了列和映射。但可以使用原始代码。

1 个答案:

答案 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()