1

Je sais que nous pouvons créer une table externe dans l'entrepôt de données SQL Azure pointant vers un emplacement correspondant à un chemin de fichier ou un chemin de dossier. Ce chemin de fichier ou de dossier peut-il être basé sur un motif générique au lieu d'un chemin explicite?Création d'une table externe dans l'entrepôt de données SQL Azure vers un chemin de fichier ou de dossier générique

Ici, mon chemin de fichier est un emplacement dans Azure Data Lake Store.

- Syntaxe pour SQL Server

- Créer une nouvelle table externe
CREATE TABLE EXTERNE [database_name. [nom_schéma]. | nom_schéma. ] Table_name
([, ... n])
AVEC (
LOCATION = 'folder_or_filepath',
DATA_SOURCE = external_data_source_name,
file_format = external_file_format_name
[, [, ... n]]
)
[;]

Répondre

2

pOLYBASE/tables externes ne prennent pas en charge les caractères génériques à ce moment. Ayez simplement un dossier par table externe dont vous avez besoin. Si vous pensez que cela est une caractéristique importante manquante, vous pouvez créer une demande et votez ici:

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

Gardez à l'esprit Polybase (dans Azure entrepôt de données SQL) pouvez maintenant lire les fichiers soit dans le stockage de blob ou en Azure Data Lake Storage (ADLS). Par conséquent, comme une autre solution de contournement, lac Azure Data Analytics (DLAA) et Polybase de soutien U-SQL, de sorte que vous pouvez utiliser U-SQL pour déplacer les fichiers que vous voulez du magasin blob dans votre lac, par exemple

// Move data from blob store to data lake 
// add filename and structure as one file 
DECLARE @inputFilepath string = "wasb://[email protected]/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