1
votes

Ajouter dynamiquement datetime au nom de fichier pendant l'activité de copie ou lors de la spécification du nom dans le jeu de données blob

J'enregistre un fichier dans le stockage blob dans Data Factory V2, lorsque je spécifie l'emplacement de sauvegarde, j'appelle le fichier (par exemple) file1 et il enregistre dans le blob en tant que fichier1, pas de problème. Mais puis-je utiliser la fonction de contenu dynamique pour ajouter le datetime au nom du fichier afin que ce soit quelque chose comme file1_01-07-2019_14-30-00? (7 janvier 14:30:00 juste au cas où il serait difficile à lire). Sinon, puis-je afficher le résultat (le nom de fichier) de l'activité du webhook vers l'activité suivante (la fonction)?

Merci.


0 commentaires

3 Réponses :


0
votes

Vous pouvez ajouter un paramètre d'ensemble de données tel que WindowStartTime, au format 2019-01-10T13: 50: 04.279Z. Ensuite, vous auriez quelque chose comme ci-dessous pour le nom de fichier dynamique: @concat ('fichier1_', formatDateTime (ensemble de données (). WindowStartTime, 'MM-jj-aaaa_hh-mm-ss')).

Pour l'utiliser dans l'activité de copie, vous devrez également ajouter un paramètre de pipeline.


4 commentaires

Les fonctions de données d'expressions peuvent être trouvées ici: docs.microsoft.com/en-us/azure/data-factory/...


Merci à vous deux pour votre retour. J'ai du mal à reconstituer cela. J'ai créé un paramètre de pipeline qui ressemble à


Merci à vous deux pour votre retour. J'ai du mal à reconstituer cela. J'ai créé un paramètre de pipeline qui ressemble à Name: startTime Type: String Valeur par défaut: '1900-01-01T13: 00: 00Z' Pour l'ensemble de données, j'ai un paramètre appelé startTime (doit-il avoir un nom différent?) Nom: startTime Type: String Valeur par défaut: @startTime Puis enfin dans le puits pour le travail de copie, j'ai le paramètre StartTime avec un contenu dymanique composé de @concat ('file1 _', formatDateTime (pipeline (). Parameters.startT‌ ime)) Je ne suis pas nouveau dans DF mais je suis nouveau dans les expressions et paramètres.


Je ne parviens pas à faire fonctionner cela, que dois-je entrer pour une valeur par défaut pour le paramètre de pipeline? Il n'y a pas beaucoup de conseils pour débuter sur les paramètres et les expressions, je reçois beaucoup d'informations sur ce qu'ils font, mais pratiquement rien sur la façon de les mettre en œuvre. EEdwards, j'essaie de suivre votre exemple, mais je ne sais pas quoi faire en ce qui concerne le paramètre pipeline.



0
votes

Une fois que vous avez configuré l'activité de copie et sélectionné votre ensemble de données blob comme récepteur, vous devez mettre une valeur pour WindowStartTime, cela peut être simplement un horodatage, par exemple. 1900-01-01T13: 00: 00Z ou vous pouvez y insérer un paramètre de pipeline. entrez la description de l'image ici

Avoir un paramètre serait peut-être plus utile si vous configurez un déclencheur de planification, car vous pourrez saisir cet horodatage WindowStartTime lorsque le déclencheur s'exécute. Pour cela, vous utiliserez @trigger (). PlanifiéTime comme valeur du paramètre de déclenchement WindowStartTime. https: // docs.microsoft.com/en-us/azure/data-factory/concepts-pipeline-execution-triggers#trigger-type-comparison


0 commentaires

1
votes

Je ne pouvais pas faire fonctionner cela sans modifier directement le fichier JSON du pipeline de copie (fin 2018 - peut-être plus nécessaire). Vous avez besoin d'un code dynamique dans le pipeline de copie JSON et des paramètres définis dans l'ensemble de données pour définir les paramètres de nom de fichier.

Dans l'ensemble de données, définissez «Paramètres» pour le chemin du dossier et / ou le nom de fichier (cliquez sur «+ Nouveau» et donnez-leur le nom de votre choix ) par exemple sourceFolderPath, sourceFileName.

Ensuite, dans l'ensemble de données sous «Connexion», incluez les éléments suivants dans la définition du «Chemin du fichier»: @dataset (). sourceFolderPath et @dataset (). sourceFileName de chaque côté du '/' (voir capture d'écran ci-dessous)

Dans le pipeline de copie, cliquez sur 'Code' dans le coin supérieur droit de la fenêtre du pipeline et recherchez le code suivant sous l'objet 'blob' que vous souhaitez définir par un nom de fichier dynamique - il le code `` paramètres '' n'est pas inclus, ajoutez-le au JSON et cliquez sur le bouton `` Terminer '' - ce code peut être nécessaire dans les `` entrées '', les `` sorties '' ou les deux selon les fichiers dynamiques que vous référencez dans votre flux - ci-dessous est un exemple où la sortie inclut le paramètre de date à la fois dans le chemin du dossier et le nom du fichier (la date est définie par un paramètre de déclenchement):

  "inputs": [
     {
        "referenceName": "tmpDataForImportParticipants",
        "type": "DatasetReference"
     }
  ],
  "outputs": [
      {
         "referenceName": "StgParticipants",
         "type": "DatasetReference",
         "parameters": {
              "sourceFolderPath": {
                   "value": <derived value of folder path>,
                   "type": "Expression"
               },
               "sourceFileName": {
                    "value": <derived file name>,
                    "type": "Expression"
               }
          }
      }
  ]

La valeur dérivée du chemin du dossier peut être quelque chose comme ce qui suit - cela donne un chemin de dossier de aaaa / mm / jj dans le blobContainer spécifié:

"blobContainer / @ {formatDateTime (pipeline (). parameters.windowStart, 'yyyy')} / @ {formatDateTime (pipeline (). parameters.windowStart, 'MM')} / @ {formatDateTime (pipeline (). parameters.windowStart, 'dd')} "

ou il pourrait être codé en dur, par exemple "blobContainer / directoryPath" - ne pas inclure '/' au début ou à la fin de la définition

Le nom de fichier dérivé pourrait être quelque chose comme ce qui suit:

"@concat (string (pipeline () .parameters .'_ ', formatDateTime (dataset (). WindowStartTime,' MM-dd-yyyy_hh-mm-ss '))>,'. txt ') "

Vous pouvez inclure n'importe quel paramètre défini par le déclencheur, par exemple une valeur d'ID, un nom de compte, etc. en incluant des paramètres pipeline ().

Exemple de paramètres de jeu de données dynamiques

Exemple de connexion de jeu de données dynamique


0 commentaires