Glue和Snowflake:如何执行SQL转换

0

【以下的问题经过翻译处理】 我认为这可能是个愚蠢的问题,但我无法想出如何在Glue上简单地定期执行SQL转换脚本。我的目标是使用Glue调度Snowflake中包含的所有转换(因为我需要的所有数据都已经存在于Snowflake中)。

以下是我想要做的简化示例(将两个单独的销售表中的今天的销售数据插入到一个统一的销售表中):

INSERT INTO DATABASE2.SCHEMA2.UNIFIED_SALES_TABLE

	SELECT
		DATE
	,	SUM(REVENUE_USD) REVENUE
	
	FROM
		DATABASE1.SCHEMA1.FIRST_SALES_TABLE
	
	WHERE
		DATE = CURRENT_DATE
	
	
	UNION ALL
	
	
	SELECT
		DATE
	,	SUM(USD_REVENUE) REVENUE
	
	FROM
		DATABASE3.SCHEMA3.ANOTHER_SALES_TABLE
		
	WHERE
		DATE = CURRENT_DATE
;

我已经在Glue中设置了我的Snowflake连接器,并使用该连接器进行了连接。我能够连接成功,但我正在寻找一个地方,可以简单地将我的SQL粘贴到其中,以便它能够按计划运行。这是否可能?我不需要进行任何映射,也不需要将任何数据从源->目标移动;我只需要在我的Snowflake实例中执行SQL,但我不确定应该在哪里/如何完成此操作。

我尝试使用“SQL”转换选项,该选项显示“自定义SQL代码以执行”。听起来这正是我想要的,但我得到的印象是,它并不完全是我想要的。 我遇到的一个特别的问题是 AnalysisException:会话目录中的名称空间必须只有一个名称部分:如果我完全限定了名称。由于我使用不同的数据库和模式,必须对其进行限定,以便SQL起

profile picture
专家
已提问 3 个月前1 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,

如果你的目标是仅运行一些ELT,你最优化成本的选择将是使用Glue Python Shell作业,导入Snowflake Python 连接器。使用这种方法,您可以以1/16个DPU的成本执行针对Snowflake的SQL代码。

您还可以在Glue Spark ETL Job中导入Snowflake Python连接器,但您的作业将大多处于空闲状态,您需要为相同的操作支付过高的费用。

SnowFlake的Glue Studio连接器应类似于Snowflake Connector for Spark。该连接器的主要目标是在Snowflake和Spark之间创建快速的数据交换,因此,为了写入Snowflake,它首先将数据写入S3,然后使用Snowflake复制命令。它提供运行一些预处理和后处理SQL的能力,但仍需要将数据加载到中间表中。

如果您在Spark中进行一些转换,将DataFrame加载到Snowflake表中,然后需要运行您的Snowflake SQL,则带有后置动作的Glue Studio Connector for SnowFlake将是最佳选择。

Glue Studio SQL transform将使用SparkSQL实现您的代码,目前主要用于ETL而不是ELT。

profile picture
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则