【问题标题】:Automating ETL Data pipeline in snowflake using streams and tasks使用流和任务自动化雪花中的 ETL 数据管道
【发布时间】:2022-01-13 19:35:57
【问题描述】:

我正在尝试自动化 ETL 数据管道流程,其目的是将 JSON 从 s3 加载到 临时表 中,一旦数据加载到临时表中,任务就会从 json 中提取数据并加载它到提取表中,最后存储过程将数据从提取表中加载到维度表中。

我创建了一个雪管,它能够成功地将 json 从 s3 加载到 staging table 中,但我被困在试图将数据自动加载到 extraction table 来自 staging table 使用流(stream 是在 staging table 之上创建的)。我的理解是流可以跟踪暂存表中发生的变化,并且任何进入暂存区域的新文件只需执行并加载到提取表中。

有人可以根据暂存表中发生的新插入来帮助我创建任务语法组合流

我使用的代码如下,它根本不会将数据加载到提取表中。

create or replace task insertintoextractiontable

    WAREHOUSE = Default_WH    

WHEN
  SYSTEM$STREAM_HAS_DATA('STAGESTREAM')

【问题讨论】:

  • 创建任务后,是否执行了RESUME命令?默认情况下,新任务被暂停。
  • 嗨 Michael Golos,我试图恢复任务,但它抛出错误 Task should have a SCHEDULE or AFTER to be resumed。
  • 我是否应该在上面的 mypost 中的创建任务语句中包含类似 SCHEDULE = '5 minute' 的内容
  • 是的,您必须设置 SCHEDULE 或 AFTER 另一个作业才能运行此作业。

标签: stream pipe task snowflake-cloud-data-platform etl


【解决方案1】:

我会检查以下几点来检查任务的功能

  1. 检查状态任务,如果是新的,它们将处于暂停状态,需要恢复。

  2. 在下面查询以查看任务历史记录发生了什么

    选择 * 从表(information_schema.task_history( schedule_time_range_start=>dateadd('hour',-1,current_timestamp()), result_limit => 10, task_name=>'MYTASK'))

  3. 如果以上几点不起作用,请在创建任务时检查 cron 语法的配置。

【讨论】:

  • 嗨,Anand,我试图恢复任务,但它抛出错误 Task should have a SCHEDULE or AFTER to be resumed。
  • 我试图恢复任务,但它抛出错误 Task should have a SCHEDULE or AFTER to be resumed。我是否应该在上面的 mypost 中的创建任务语句中包含类似 SCHEDULE = '5 minute' 的内容
  • 是的,将计划添加到任务..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2021-04-13
  • 1970-01-01
  • 2021-12-25
  • 2017-06-19
相关资源
最近更新 更多