Déplacer des données depuis une source de table web à l’aide d’Azure Data FactoryMove data from a Web table source using Azure Data Factory

Notes

Cet article s’applique à la version 1 de Data Factory.This article applies to version 1 of Data Factory. Si vous utilisez la version actuelle du service Data Factory, consultez Connecteur de table web dans V2.If you are using the current version of the Data Factory service, see Web table connector in V2.

Cet article explique comment utiliser l’activité de copie d’Azure Data Factory afin de déplacer les données d’une table dans une page web vers un magasin de données récepteur pris en charge.This article outlines how to use the Copy Activity in Azure Data Factory to move data from a table in a Web page to a supported sink data store. Cet article s’appuie sur l’article des activités de déplacement des données qui présente une vue d’ensemble du déplacement des données avec l’activité de copie et la liste de magasins de données pris en charge comme sources/récepteurs.This article builds on the data movement activities article that presents a general overview of data movement with copy activity and the list of data stores supported as sources/sinks.

Actuellement, Data Factory prend uniquement en charge le déplacement de données depuis une table web vers d’autres magasins de données, mais pas l’inverse.Data factory currently supports only moving data from a Web table to other data stores, but not moving data from other data stores to a Web table destination.

Important

Pour l’instant, ce connecteur web prend uniquement en charge l’extraction du contenu d’une table à partir d’une page HTML.This Web connector currently supports only extracting table content from an HTML page. Pour récupérer des données à partir d’un point de terminaison HTTP/S, utilisez plutôt le Connecteur HTTP.To retrieve data from a HTTP/s endpoint, use HTTP connector instead.

PrérequisPrerequisites

Pour utiliser ce connecteur Table web, vous devez configurer un runtime d’intégration auto-hébergé (également appelé passerelle de gestion des données) et la propriété gatewayName dans le service lié récepteur.To use this Web table connector, you need to set up a Self-hosted Integration Runtime (aka Data Management Gateway) and configure the gatewayName property in the sink linked service. Par exemple, pour effectuer une copie à partir de Table web vers le stockage d’objets Blob Azure, configurez le service lié Stockage Azure comme suit :For example, to copy from Web table to Azure Blob storage, configure the Azure Storage linked service as the following:

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>",
      "gatewayName": "<gateway name>"
    }
  }
}

Prise en mainGetting started

Vous pouvez créer un pipeline avec une activité de copie qui déplace les données d’un magasin de données Cassandra local à l’aide de différents outils/API.You can create a pipeline with a copy activity that moves data from an on-premises Cassandra data store by using different tools/APIs.

  • Le moyen le plus simple de créer un pipeline consiste à utiliser l’Assistant Copie.The easiest way to create a pipeline is to use the Copy Wizard. Consultez le tutoriel : Créer un pipeline avec l’activité de copie à l’aide de l’Assistant Copie pour obtenir une procédure pas à pas rapide sur la création d’un pipeline à l’aide de l’Assistant Copie de données.See Tutorial: Create a pipeline using Copy Wizard for a quick walkthrough on creating a pipeline using the Copy data wizard.
  • Vous pouvez également utiliser les outils suivants pour créer un pipeline : Visual Studio, Azure PowerShell, modèle Azure Resource Manager, .NET API et REST API.You can also use the following tools to create a pipeline: Visual Studio, Azure PowerShell, Azure Resource Manager template, .NET API, and REST API. Pour obtenir des instructions détaillées sur la création d’un pipeline avec une activité de copie, consultez le didacticiel sur l’activité de copie.See Copy activity tutorial for step-by-step instructions to create a pipeline with a copy activity.

Que vous utilisiez des outils ou des API, la création d’un pipeline qui déplace les données d’un magasin de données source vers un magasin de données récepteur implique les étapes suivantes :Whether you use the tools or APIs, you perform the following steps to create a pipeline that moves data from a source data store to a sink data store:

  1. Création de services liés pour lier les magasins de données d’entrée et de sortie à votre fabrique de données.Create linked services to link input and output data stores to your data factory.
  2. Création de jeux de données pour représenter les données d’entrée et de sortie de l’opération de copie.Create datasets to represent input and output data for the copy operation.
  3. Création d’un pipeline avec une activité de copie qui utilise un jeu de données en tant qu’entrée et un jeu de données en tant que sortie.Create a pipeline with a copy activity that takes a dataset as an input and a dataset as an output.

Lorsque vous utilisez l’Assistant, les définitions JSON de ces entités Data Factory (services liés, jeux de données et pipeline) sont automatiquement créées pour vous.When you use the wizard, JSON definitions for these Data Factory entities (linked services, datasets, and the pipeline) are automatically created for you. Lorsque vous utilisez des outils/API (à l’exception de l’API .NET), vous devez définir ces entités Data Factory au format JSON.When you use tools/APIs (except .NET API), you define these Data Factory entities by using the JSON format. Pour un exemple contenant des définitions JSON pour les entités Data Factory servant à copier des données à partir d’une table web, consultez la section Exemple JSON : copier des données d’une table web vers Stockage Blob Azure de cet article.For a sample with JSON definitions for Data Factory entities that are used to copy data from a web table, see JSON example: Copy data from Web table to Azure Blob section of this article.

Les sections suivantes fournissent des informations sur les propriétés JSON utilisées pour définir les entités Data Factory spécifiques d’une table web :The following sections provide details about JSON properties that are used to define Data Factory entities specific to a Web table:

Propriétés du service liéLinked service properties

Le tableau suivant fournit la description des éléments JSON spécifiques du service lié Web.The following table provides description for JSON elements specific to Web linked service.

PropriétéProperty DescriptionDescription ObligatoireRequired
typetype La propriété type doit être définie sur : webThe type property must be set to: Web OUIYes
UrlUrl URL de la source webURL to the Web source OUIYes
authenticationTypeauthenticationType AnonymeAnonymous. OUIYes

Utilisation de l’authentification anonymeUsing Anonymous authentication

{
    "name": "web",
    "properties":
    {
        "type": "Web",
        "typeProperties":
        {
            "authenticationType": "Anonymous",
            "url" : "https://en.wikipedia.org/wiki/"
        }
    }
}

Propriétés du jeu de donnéesDataset properties

Pour obtenir une liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article Création de jeux de données.For a full list of sections & properties available for defining datasets, see the Creating datasets article. Les sections comme la structure, la disponibilité et la stratégie d'un jeu de données JSON sont similaires pour tous les types de jeux de données (SQL Azure, Azure Blob, Azure Table, etc.).Sections such as structure, availability, and policy of a dataset JSON are similar for all dataset types (Azure SQL, Azure blob, Azure table, etc.).

La section typeProperties est différente pour chaque type de jeu de données et fournit des informations sur l’emplacement des données dans le magasin de données.The typeProperties section is different for each type of dataset and provides information about the location of the data in the data store. La section typeProperties pour le jeu de données de type WebTable a les propriétés suivantesThe typeProperties section for dataset of type WebTable has the following properties

PropriétéProperty DescriptionDescription ObligatoireRequired
Typetype Type du jeu de données.type of the dataset. Doit avoir la valeur WebTablemust be set to WebTable OUIYes
chemin d’accèspath URL relative de la ressource qui contient la table.A relative URL to the resource that contains the table. Non.No. Quand le chemin d’accès n’est pas spécifié, seule l’URL spécifiée dans la définition du service lié est utilisée.When path is not specified, only the URL specified in the linked service definition is used.
indexindex Index de la table dans la ressource.The index of the table in the resource. Pour savoir comment obtenir l’index d’une table dans une page HTML, consultez la section Obtenir l’index d’une table dans une page HTML .See Get index of a table in an HTML page section for steps to getting index of a table in an HTML page. OUIYes

Exemple :Example:

{
    "name": "WebTableInput",
    "properties": {
        "type": "WebTable",
        "linkedServiceName": "WebLinkedService",
        "typeProperties": {
            "index": 1,
            "path": "AFI's_100_Years...100_Movies"
        },
        "external": true,
        "availability": {
            "frequency": "Hour",
            "interval":  1
        }
    }
}

Propriétés de l’activité de copieCopy activity properties

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Création de pipelines.For a full list of sections & properties available for defining activities, see the Creating Pipelines article. Les propriétés comme le nom, la description, les tables d’entrée et de sortie et la stratégie sont disponibles pour tous les types d’activités.Properties such as name, description, input and output tables, and policy are available for all types of activities.

En revanche, les propriétés disponibles dans la section typeProperties de l’activité varient pour chaque type d'activité.Whereas, properties available in the typeProperties section of the activity vary with each activity type. Pour l’activité de copie, elles dépendent des types de sources et récepteurs.For Copy activity, they vary depending on the types of sources and sinks.

Actuellement, lorsque la source de l’activité de copie est de type WebSource, aucune propriété supplémentaire n’est prise en charge.Currently, when the source in copy activity is of type WebSource, no additional properties are supported.

Exemple JSON : copier des données d’une table web vers Stockage Blob AzureJSON example: Copy data from Web table to Azure Blob

L’exemple suivant montre :The following sample shows:

  1. Un service lié de type Web.A linked service of type Web.
  2. Un service lié de type AzureStorage.A linked service of type AzureStorage.
  3. Un jeu de données d’entrée de type WebTable.An input dataset of type WebTable.
  4. Un jeu de données de sortie de type AzureBlob.An output dataset of type AzureBlob.
  5. Un pipeline avec une activité de copie qui utilise WebSource et BlobSink.A pipeline with Copy Activity that uses WebSource and BlobSink.

L’exemple copie des données d’une table web vers un objet blob Azure toutes les heures.The sample copies data from a Web table to an Azure blob every hour. Les propriétés JSON utilisées dans ces exemples sont décrites dans les sections suivant les exemples.The JSON properties used in these samples are described in sections following the samples.

L’exemple suivant indique comment copier des données à partir d’une table web vers un objet blob Azure.The following sample shows how to copy data from a Web table to an Azure blob. Toutefois, les données peuvent être copiées directement vers l’un des récepteurs indiqués dans l’article Activités de déplacement des données , par le biais de l’activité de copie d’Azure Data Factory.However, data can be copied directly to any of the sinks stated in the Data Movement Activities article by using the Copy Activity in Azure Data Factory.

Service lié Web Cet exemple utilise le service lié Web avec l’authentification anonyme.Web linked service This example uses the Web linked service with anonymous authentication. Consultez la section Service lié Web pour connaître les différents types d’authentification que vous pouvez utiliser.See Web linked service section for different types of authentication you can use.

{
    "name": "WebLinkedService",
    "properties":
    {
        "type": "Web",
        "typeProperties":
        {
            "authenticationType": "Anonymous",
            "url" : "https://en.wikipedia.org/wiki/"
        }
    }
}

Service lié Azure StorageAzure Storage linked service

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>",
      "gatewayName": "<gateway name>"
    }
  }
}

Jeu de données d’entrée WebTable La définition de external sur true informe le service Data Factory qu’il s’agit d’un jeu de données qui est externe à Data Factory et non produit par une activité dans Data Factory.WebTable input dataset Setting external to true informs the Data Factory service that the dataset is external to the data factory and is not produced by an activity in the data factory.

Notes

Pour savoir comment obtenir l’index d’une table dans une page HTML, consultez la section Obtenir l’index d’une table dans une page HTML .See Get index of a table in an HTML page section for steps to getting index of a table in an HTML page.

{
    "name": "WebTableInput",
    "properties": {
        "type": "WebTable",
        "linkedServiceName": "WebLinkedService",
        "typeProperties": {
            "index": 1,
            "path": "AFI's_100_Years...100_Movies"
        },
        "external": true,
        "availability": {
            "frequency": "Hour",
            "interval":  1
        }
    }
}

Jeu de données de sortie d'objet Blob AzureAzure Blob output dataset

Les données sont écrites dans un nouvel objet blob toutes les heures (fréquence : heure, intervalle : 1).Data is written to a new blob every hour (frequency: hour, interval: 1).

{
    "name": "AzureBlobOutput",
    "properties":
    {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties":
        {
            "folderPath": "adfgetstarted/Movies"
        },
        "availability":
        {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Pipeline avec activité de copiePipeline with Copy activity

Le pipeline contient une activité de copie qui est configurée pour utiliser les jeux de données d'entrée et de sortie, et qui est planifiée pour s'exécuter toutes les heures.The pipeline contains a Copy Activity that is configured to use the input and output datasets and is scheduled to run every hour. Dans la définition du pipeline JSON, le type source est défini sur WebSource et le type sink est défini sur BlobSink.In the pipeline JSON definition, the source type is set to WebSource and sink type is set to BlobSink.

Pour obtenir la liste des propriétés prises en charge par WebSource, consultez propriétés du type WebSource.See WebSource type properties for the list of properties supported by the WebSource.

{  
    "name":"SamplePipeline",
    "properties":{  
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline with copy activity",
    "activities":[  
      {
        "name": "WebTableToAzureBlob",
        "description": "Copy from a Web table to an Azure blob",
        "type": "Copy",
        "inputs": [
          {
            "name": "WebTableInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureBlobOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "WebSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
       "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
      ]
   }
}

Obtenir l’index d’une table dans une page HTMLGet index of a table in an HTML page

  1. Lancez Excel 2016 et basculez vers l’onglet Données.Launch Excel 2016 and switch to the Data tab.

  2. Cliquez sur Nouvelle requête dans la barre d’outils, pointez sur À partir d’autres sources et cliquez sur À partir du web.Click New Query on the toolbar, point to From Other Sources and click From Web.

    Menu Power Query

  3. Dans la boîte de dialogue À partir du web, entrez l’URL que vous utiliseriez dans le service lié JSON (par exemple https://en.wikipedia.org/wiki/), ainsi que le chemin à spécifier pour le jeu de données (par exemple : AFI%27s_100_Years...100_Movies), puis cliquez sur OK.In the From Web dialog box, enter URL that you would use in linked service JSON (for example: https://en.wikipedia.org/wiki/) along with path you would specify for the dataset (for example: AFI%27s_100_Years...100_Movies), and click OK.

    Boîte de dialogue À partir du web

    URL utilisée dans cet exemple : https://en.wikipedia.org/wiki/AFI%27s_100_Years...100_MoviesURL used in this example: https://en.wikipedia.org/wiki/AFI%27s_100_Years...100_Movies

  4. Si la boîte de dialogue Accéder au contenu web apparaît, sélectionnez l’URL et l’authentification adéquates, puis cliquez sur Se connecter.If you see Access Web content dialog box, select the right URL, authentication, and click Connect.

    Boîte de dialogue Accéder au contenu web

  5. Cliquez sur un élément de table dans l’arborescence pour afficher le contenu de la table, puis sur le bouton Modifier du bas.Click a table item in the tree view to see content from the table and then click Edit button at the bottom.

    Boîte de dialogue Navigateur

  6. Dans la fenêtre Éditeur de requête, cliquez sur Éditeur avancé dans la barre d’outils.In the Query Editor window, click Advanced Editor button on the toolbar.

    Bouton Éditeur avancé

  7. Dans la boîte de dialogue Éditeur avancé, le numéro en regard de « Source » est l’index.In the Advanced Editor dialog box, the number next to "Source" is the index.

    Éditeur avancé - Index

Si vous utilisez Excel 2013, utilisez Microsoft Power Query pour Excel pour obtenir l’index.If you are using Excel 2013, use Microsoft Power Query for Excel to get the index. Pour plus d’informations, consultez l’article Se connecter à une page web .See Connect to a web page article for details. Les étapes sont identiques si vous utilisez Microsoft Power BI Desktop.The steps are similar if you are using Microsoft Power BI for Desktop.

Notes

Pour savoir comment mapper des colonnes d’un jeu de données source sur des colonnes d’un jeu de données récepteur, consultez Mappage de colonnes des jeux de données dans Azure Data Factory.To map columns from source dataset to columns from sink dataset, see Mapping dataset columns in Azure Data Factory.

Performances et réglagePerformance and Tuning

Consultez l’article Guide sur les performances et le réglage de l’activité de copie pour en savoir plus sur les facteurs clés affectant les performances de déplacement des données (activité de copie) dans Azure Data Factory et les différentes manières de les optimiser.See Copy Activity Performance & Tuning Guide to learn about key factors that impact performance of data movement (Copy Activity) in Azure Data Factory and various ways to optimize it.