使用 COPY DATA activity 到 SQL table 与使用 CREATE EXTERNAL TABLE 有什么区别?
What is the difference between using a COPY DATA activity to a SQL table vs using CREATE EXTERNAL TABLE?
我有一堆 U-SQL 操作和转换 Azure Data Lake
中的数据的活动。由此,我得到一个包含我所有事件的 csv
文件。
接下来我将使用 Copy Data
activity 将 csv
文件从数据湖直接复制到 Azure SQL Data Warehouse
table。
- 我从存储在数据湖中的一堆
JSON
文件中提取信息并创建一个临时 .csv
文件;
- 我抓取暂存
.csv
文件和生产 .csv
文件并注入最新更改(并避免重复)并保存生产 .csv
文件;
- 将
.csv
生产文件直接复制到仓库 table。
我意识到我的 table 包含重复的行,并且在测试了 U-SQL
脚本之后,我假设 Copy Data
activity - 以某种方式 - 合并了内容csv
文件到 table。
问题
我不相信我在这里做的是对的。我是否应该将我的仓库 table 定义为一个 EXTERNAL table 并从 .csv
生产文件中获取数据?或者我应该将我的 U-SQL 更改为仅包含最新更改吗?
是否要使用外部表取决于您的用例。如果您希望将数据存储在 SQL DW 中以获得更好的性能,则必须在某些时候复制它,例如通过存储过程。例如,您随后可以从 ADF 调用存储过程。
或者,如果您不想/不能事先过滤掉数据,您还可以在 SQL DW 中实施 "Upsert" 存储过程,并 call this 插入您的数据而不是副本 activity.
我有一堆 U-SQL 操作和转换 Azure Data Lake
中的数据的活动。由此,我得到一个包含我所有事件的 csv
文件。
接下来我将使用 Copy Data
activity 将 csv
文件从数据湖直接复制到 Azure SQL Data Warehouse
table。
- 我从存储在数据湖中的一堆
JSON
文件中提取信息并创建一个临时.csv
文件; - 我抓取暂存
.csv
文件和生产.csv
文件并注入最新更改(并避免重复)并保存生产.csv
文件; - 将
.csv
生产文件直接复制到仓库 table。
我意识到我的 table 包含重复的行,并且在测试了 U-SQL
脚本之后,我假设 Copy Data
activity - 以某种方式 - 合并了内容csv
文件到 table。
问题
我不相信我在这里做的是对的。我是否应该将我的仓库 table 定义为一个 EXTERNAL table 并从 .csv
生产文件中获取数据?或者我应该将我的 U-SQL 更改为仅包含最新更改吗?
是否要使用外部表取决于您的用例。如果您希望将数据存储在 SQL DW 中以获得更好的性能,则必须在某些时候复制它,例如通过存储过程。例如,您随后可以从 ADF 调用存储过程。
或者,如果您不想/不能事先过滤掉数据,您还可以在 SQL DW 中实施 "Upsert" 存储过程,并 call this 插入您的数据而不是副本 activity.