2017-01-05 1 views
3

J'ai un petit pipeline ADF qui copie une série de fichiers d'un compte de stockage Azure vers un compte Azure Data Lake. En tant qu'activité finale dans le pipeline, je souhaite exécuter un script U-SQL qui utilise les fichiers copiés en tant qu'entrées et envoie le résultat à une table gérée U-SQL. Le script U-SQL extrait essentiellement les données des fichiers copiés, applique une certaine transformation, puis l'insère dans une table gérée U-SQL existante.Est-il possible d'utiliser des tables managées U-SQL comme ensembles de données de sortie dans Azure Data Factory?

Comment (si possible) puis-je ajouter la table U-SQL en tant que jeu de données de sortie dans Azure Data Factory?

+0

Je me demande pourquoi vous utilisez ADF pour copier des données. Vous pouvez lire directement les données à partir de blob Azure, les traiter et les écrire directement dans une table managée à l'aide de U-SQL. – Jamil

+0

Oui cela pourrait être fait mais dans ce cas seulement un sous-ensemble des données des fichiers copiés sont ajoutés à la table. Mais j'ai toujours besoin de conserver le fichier JSON complet dans le DataLake. Nous ne conservons que les fichiers pendant 30 jours dans le compte de stockage. De toute façon, la question s'applique toujours. – soderstromOlov

Répondre

1

Vous ne pouvez pas ajouter de table interne U-SQL en tant qu'ensemble de données en sortie dans Azure Data Factory (ADF). Une question similaire a été soulevée récemment: here et la réponse de Michael Rys (le "père" d'U-SQL) était "Je sais que l'équipe ADF a un travail à faire pour vous."

Vous pouvez utiliser howerver Azure Data Factory pour exécuter un script U-SQL paramétré, où le paramètre d'entrée est le chemin de fichier. Cela aurait un résultat similaire.

pipeline Exemple d'un recent question:

{ 
    "name": "ComputeEventsByRegionPipeline", 
    "properties": { 
     "description": "This is a pipeline to compute events for en-gb locale and date less than 2012/02/19.", 
     "activities": [ 
      { 
       "type": "DataLakeAnalyticsU-SQL", 
       "typeProperties": { 
        "scriptPath": "adlascripts\\SearchLogProcessing.txt", 
        "scriptLinkedService": "StorageLinkedService", 
        "degreeOfParallelism": 3, 
        "priority": 100, 
        "parameters": { 
         "in": "/input/SearchLog.tsv", 
         "out": "/output/Result.tsv" 
        } 
       }, 
... 

Fondamentalement, le script U-SQL va de:

@searchlog = 
    EXTRACT ... 
    FROM @in 
    USING Extractors.Tsv(); 

à:

@searchlog = 
    EXTRACT ... 
    FROM "/input/SearchLog.tsv" 
    USING Extractors.Tsv(); 

que je pense réalise la même chose que vous vouloir.

+1

J'avais déjà implémenté les paramètres dynamiques mais après avoir lu votre réponse, je viens d'ajouter une SORTIE d'un fichier CSV au Data Lake Store avec une ligne et une colonne à la fin du script U-SQL. Cela a résolu le problème. – soderstromOlov

+0

Super! Envisageriez-vous de marquer cela comme une réponse, ou pensez-vous que ce n'est pas vraiment une réponse à la question? – wBob

+0

Il répond à la question en partie mais pas la partie critique sur la façon de contourner le fait que vous devez fournir ADF avec un jeu de données de sortie approprié. – soderstromOlov