首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Polybase中创建视图

在Polybase中创建视图
EN

Stack Overflow用户
提问于 2019-02-05 21:08:32
回答 1查看 562关注 0票数 1

我试图通过polybase加载多个文件,并在创建视图时抛出一个错误。

代码语言:javascript
复制
select * from dbo.test

fname lname
a.csv null
b.csv null

我能够成功地创建数据源和外部表,没有任何问题。

码错误

代码语言:javascript
复制
Error in the code.
Msg 207, Level 16, State 1, Line 4
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.
Invalid column name 'DATA_FILE_NAME'.

代码语言:javascript
复制
 IF OBJECT_ID('dbo.TEST_V', 'V') IS NOT NULL
DROP VIEW [dbo].[TEST_V]
GO

 -- Create new view
CREATE VIEW [dbo].[TEST_V]
AS

-- Add dynamic T-SQL to temporary table 

SELECT 

-- Auto increment number
ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS ROW_ID,

-- Data file name
DATA_FILE_NAME AS DATA_FILE,

-- Drop external table if it exists
'IF EXISTS (SELECT * FROM sys.external_tables WHERE NAME = ' + 
CHAR(39) + SUBSTRING(DATA_FILE_NAME, 1, LEN(DATA_FILE_NAME) - 11) + CHAR(39) + ') ' + 
'DROP EXTERNAL TABLE [dbo].[' + SUBSTRING(DATA_FILE_NAME, 1, LEN(DATA_FILE_NAME) - 11) + '];' AS DROP_STMT,

-- Create new external table
'CREATE EXTERNAL TABLE [dbo].[' + SUBSTRING(DATA_FILE_NAME, 1, LEN(DATA_FILE_NAME) - 11) + '] ' + 
'( ' + 
'fname [varchar] (70), ' +
'lname [varchar] (70) ' +
   ') ' + 
'WITH ' +
'( ' +
'LOCATION=' + CHAR(39) + '/NEW/' + DATA_FILE_NAME + CHAR(39) + ' ' +
', DATA_SOURCE = SIMPLE' +
', FILE_FORMAT = SIMPLE_HEADER' +
', REJECT_TYPE = VALUE ' + 
', REJECT_VALUE = 1 ' +
') ' AS CREATE_STMT,

-- Move data into staging table
'INSERT INTO dbo.fname ' + 
'SELECT ' +
'  fname ,' +
'  lname ' +
'FROM [dbo].[' + SUBSTRING(DATA_FILE_NAME, 1, LEN(DATA_FILE_NAME) - 11) + '] ' +
';' AS INSERT_STMT

FROM 
[dbo].[test];
GO

我试图使用上面的视图创建过程,使用多个文件动态加载数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-06 02:26:30

因为它们都是针对同一个表的,所以不需要使用这个逐文件的方法。Polybase将加载一组类似通配符的文件。如果将同一类型的所有数据文件放入文件夹,并将该文件夹设置为位置,则该文件夹中的所有文件都将并行加载。你会发现你的负载更快,…目前,您正在按顺序处理文件,使用我建议的方法将尽可能快地并行处理这些文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54543064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档