我知道我们可以在Azure SQL数据仓库中创建指向的外部表 一个LOCATION,它是文件路径或文件夹路径。此文件或文件夹路径是否可以基于通配符模式而不是显式路径。
此处我的文件路径是Azure Data Lake Store中的一个位置。
- SQL Server的语法
- 创建新的外部表
CREATE EXTERNAL TABLE [database_name。 [schema_name]。 |模式名。 ] table_name
([,... n])
WITH(
LOCATION ='folder_or_filepath',
DATA_SOURCE = external_data_source_name,
FILE_FORMAT = external_file_format_name
[,[,... n]]
)
[;]
答案 0 :(得分:2)
Polybase / External Tables目前不支持通配符。每个外部表只需一个文件夹即可。如果您认为这是一个重要的缺失功能,您可以在此处创建请求并投票:
https://feedback.azure.com/forums/307516-sql-data-warehouse
请记住Polybase(在Azure SQL数据仓库中)现在可以在blob存储或Azure Data Lake Storage(ADLS)中读取文件。因此,作为另一种解决方法,Azure Data Lake Analytics(ADLA)和U-SQL支持Polybase,因此您可以使用U-SQL将您想要的文件从blob存储区移动到您的湖中,例如
// Move data from blob store to data lake
// add filename and structure as one file
DECLARE @inputFilepath string = "wasb://someContainer@someStorageAccount.blob.core.windows.net/someFilter/{filepath}.csv";
DECLARE @outputFilepath string = "output/special folder/output.csv";
@input =
EXTRACT
... // your column list
filepath string
FROM @inputFilepath
USING Extractors.Csv()
@input =
SELECT * FROM @input
WHERE filename.Contains("yourFilter");
// Export as csv
OUTPUT @input
TO @outputFilepath
USING Outputters.Csv(quoting:false);
// Now the data is in Data Lake which Polybase can also use as a source