3

I know we can create an External table in Azure SQL Data warehouse pointing to a LOCATION that is either a file path or a folder path. Can this file or folder path be based on a wild card pattern instead of an explicit path.

Here my file path is a location in Azure Data Lake Store.

-- Syntax for SQL Server

-- Create a new external table  
CREATE EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name. ] table_name   
    ( <column_definition> [ ,...n ] )  
    WITH (   
        **LOCATION = 'folder_or_filepath'**,  
        DATA_SOURCE = external_data_source_name,  
        FILE_FORMAT = external_file_format_name  
        [ , <reject_options> [ ,...n ] ]  
    )  
[;]  
4

1 回答 1

3

Polybase / 外部表目前不支持通配符。只需为您需要的每个外部表创建一个文件夹。如果您觉得这是一个重要的缺失功能,您可以在此处创建请求并投票:

https://feedback.azure.com/forums/307516-sql-data-warehouse

请记住,Polybase(在 Azure SQL 数据仓库中)现在可以读取 blob 存储或 Azure Data Lake Storage (ADLS) 中的文件。因此,作为另一种解决方法,Azure 数据湖分析 (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
于 2017-08-21T13:26:05.143 回答