1

Impossible de trouver une réponse via la documentation google, msdn (et autre microsoft) ou SO.Remplissage de l'ensemble de données Azure Data Factory à partir de la requête

Dans Azure Data Factory, vous pouvez obtenir des données à partir d'un ensemble de données en utilisant l'activité de copie dans un pipeline. La définition de pipeline inclut une requête. Toutes les requêtes que j'ai vues dans la documentation sont de simples requêtes de tables uniques sans jointures. Dans ce cas, un ensemble de données est défini comme une table dans la base de données avec "TableName" = "mytable". De plus, il est possible de récupérer des données à partir d'une procédure stockée, ce qui permet vraisemblablement de rendre SQL plus complexe. Existe-t-il un moyen de définir une requête plus complexe dans un pipeline qui inclut des jointures et/ou une logique de transformation qui modifie les données ou pipeline d'une requête plutôt que d'une procédure stockée. Je sais que vous pouvez spécifier des champs dans un ensemble de données, mais ne savez pas comment contourner la propriété "tablename".

S'il y a un moyen, quelle serait cette méthode?

L'entrée est un serveur SQL local. la sortie est la base de données sql azure.

MISE À JOUR pour plus de clarté.

Répondre

4

Oui, sqlReaderQuery peut être beaucoup plus complexe que ce qui est fourni dans les exemples, et il ne doit pas seulement utiliser le nom de la table dans l'ensemble de données.

Dans l'un de mes pipelines, j'ai un dataset avec le nom de table "dbo.tbl_Build", mais mon sqlReaderQuery regarde plusieurs tables dans cette base de données. Voici un exemple très tronqué:

avec BuildErrorNodes que (sélectionnez infoNode.BuildId, ...) comme MessageValue de dbo.tbl_BuildInformation2 comme infoNode jointure interne dbo.tbl_BuildInformationType comme infoType sur (infoNode.PartitionId = infoType), comme buildinfo.

Il est un peu déroutant de lister un seul nom de table dans l'ensemble de données, puis d'utiliser plusieurs tables dans la requête, mais cela fonctionne très bien.

0

Il existe un moyen de déplacer des données de SQL sur site vers Azure SQL à l'aide de Data Factory. Vous pouvez utiliser Copy Activity, vérifiez cet exemple de code pour votre cas en particulier GitHub link to the ADF Activity source. Fondamentalement, vous devez créer une copie d'activité qui aura TypeProperties avec SqlSource et SqlSink ensembles ressemblent à ceci:

<!-- language: lang-json --> 
"typeProperties": { 
     "source": { 
     "type": "SqlSource", 
     "SqlReaderQuery": "select * from [Source]" 
     }, 
     "sink": { 
     "type": "SqlSink", 
     "WriteBatchSize": 1000000, 
     "WriteBatchTimeout": "00:05:00" 
     } 
    }, 

ne mentionne aussi - vous pouvez utiliser non seulement sélectionne des tables ou vues, mais aussi [Table-Valued-Functions] fonctionnera aussi bien.

+0

Oui. J'ai eu ce travail sporadiquement. Je ne l'ai pas précisé à ce moment-là parce que j'apprenais toujours les capacités et que je ne formulais pas correctement la question, mais j'espérais savoir si la requête pouvait avoir des jointures et si oui, comment l'ensemble de données serait-il défini? il ne pouvait pas avoir un vrai nom de table. –

+0

Édité ma question. –