Associazione di tabelle esterne per Funzioni di Azure (sperimentale)External Table binding for Azure Functions (experimental)

Questo articolo illustra come usare i dati tabulari in provider SaaS, come SharePoint e Dynamics, in Funzioni di Azure.This article explains how to work with tabular data on SaaS providers, such as Sharepoint and Dynamics, in Azure Functions. Funzioni di Azure supporta le associazioni di input e output per le tabelle esterne.Azure Functions supports input and output bindings for external tables.

Importante

Le associazioni di tabelle esterne sono sperimentali e potrebbero non diventare mai disponibili a livello generale.The External Table binding is experimental and might never reach Generally Available (GA) status. Sono incluse solo in Funzioni di Azure 1.x e non è prevista la loro aggiunta in Funzioni di Azure 2. x.It is included only in Azure Functions 1.x, and there are no plans to add it to Azure Functions 2.x. Per gli scenari che richiedono l'accesso ai dati nei provider SaaS, è consigliabile usare app per la logica che chiamano funzioni.For scenarios that require access to data in SaaS providers, consider using logic apps that call into functions.

Informazioni di riferimento per gli sviluppatori delle Funzioni di Azure.This is reference information for Azure Functions developers. Se non si ha familiarità con le Funzioni di Azure, iniziare con le seguenti risorse:If you're new to Azure Functions, start with the following resources:

Connessioni APIAPI connections

Le associazioni di tabella usano connessioni API esterne per l'autenticazione con i provider SaaS di terze parti.Table bindings leverage external API connections to authenticate with third-party SaaS providers.

Quando si assegna un'associazione, è possibile creare una nuova connessione API o usare una connessione API esistente nello stesso gruppo di risorse.When assigning a binding you can either create a new API connection or use an existing API connection within the same resource group.

Connessioni API disponibili (tabelle)Available API connections (tables)

ConnettoreConnector TriggerTrigger InputInput OutputOutput
DB2DB2 xx xx
Dynamics 365 for OperationsDynamics 365 for Operations xx xx
Dynamics 365Dynamics 365 xx xx
Dynamics NAVDynamics NAV xx xx
Fogli GoogleGoogle Sheets xx xx
InformixInformix xx xx
Dynamics 365 for FinancialsDynamics 365 for Financials xx xx
MySQLMySQL xx xx
Oracle DatabaseOracle Database xx xx
Common Data ServiceCommon Data Service xx xx
SalesforceSalesforce xx xx
SharePointSharePoint xx xx
SQL ServerSQL Server xx xx
TeradataTeradata xx xx
UserVoiceUserVoice xx xx
ZendeskZendesk xx xx

Nota

È possibile usare le connessioni alle tabelle esterne anche in App per la logica di Azure.External Table connections can also be used in Azure Logic Apps.

Creazione di una connessione API: procedura dettagliataCreating an API connection: step by step

  1. Nel portale di Azure per l'app per le funzioni selezionare il segno di addizione (+) per creare una funzione.In the Azure portal page for your function app, select the plus sign (+) to create a function.

  2. Nella casella Scenario selezionare Sperimentale.In the Scenario box, select Experimental.

  3. Selezionare Tabella esterna.Select External table.

  4. Selezionare un linguaggio.Select a language.

  5. In Connessione tabella esterna selezionare una connessione esistente oppure selezionare nuova.Under External Table connection, select an existing connection or select new.

  6. Per una nuova connessione, configurare le impostazioni e quindi scegliere Autorizza.For a new connection, configure the settings, and select Authorize.

  7. Selezionare Crea per creare la funzione.Select Create to create the function.

  8. Selezionare Integrazione > Tabella esterna.Select Integrate > External Table.

  9. Configurare la connessione per usare la tabella di destinazione.Configure the connection to use your target table. Queste impostazioni variano in base ai provider SaaS.These settings will vary between SaaS providers. Nella sezione seguente sono disponibili alcuni esempi.Examples are included in the following section.

EsempioExample

Questo esempio si connette a una tabella denominata "Contatto" con le colonne Id, LastName e FirstName.This example connects to a table named "Contact" with Id, LastName, and FirstName columns. Il codice elenca le entità Contatto nella tabella e registra i nomi e i cognomi.The code lists the Contact entities in the table and logs the first and last names.

Ecco il file function.json:Here's the function.json file:

{
  "bindings": [
    {
      "type": "manualTrigger",
      "direction": "in",
      "name": "input"
    },
    {
      "type": "apiHubTable",
      "direction": "in",
      "name": "table",
      "connection": "ConnectionAppSettingsKey",
      "dataSetName": "default",
      "tableName": "Contact",
      "entityId": "",
    }
  ],
  "disabled": false
}

Ecco il codice script C#:Here's the C# script code:

#r "Microsoft.Azure.ApiHub.Sdk"
#r "Newtonsoft.Json"

using System;
using Microsoft.Azure.ApiHub;

//Variable name must match column type
//Variable type is dynamically bound to the incoming data
public class Contact
{
    public string Id { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
}

public static async Task Run(string input, ITable<Contact> table, TraceWriter log)
{
    //Iterate over every value in the source table
    ContinuationToken continuationToken = null;
    do
    {   
        //retrieve table values
        var contactsSegment = await table.ListEntitiesAsync(
            continuationToken: continuationToken);

        foreach (var contact in contactsSegment.Items)
        {   
            log.Info(string.Format("{0} {1}", contact.FirstName, contact.LastName));
        }

        continuationToken = contactsSegment.ContinuationToken;
    }
    while (continuationToken != null);
}

Origine dati SQL ServerSQL Server data source

Ecco uno script per creare una tabella in SQL Server da usare con questo esempio.To create a table in SQL Server to use with this example, here's a script. dataSetName è "default".dataSetName is “default.”

CREATE TABLE Contact
(
    Id int NOT NULL,
    LastName varchar(20) NOT NULL,
    FirstName varchar(20) NOT NULL,
    CONSTRAINT PK_Contact_Id PRIMARY KEY (Id)
)
GO
INSERT INTO Contact(Id, LastName, FirstName)
     VALUES (1, 'Bitt', 'Prad') 
GO
INSERT INTO Contact(Id, LastName, FirstName)
     VALUES (2, 'Glooney', 'Ceorge') 
GO

Origine dati Fogli GoogleGoogle Sheets data source

Per creare una tabella da usare con questo esempio in Documenti Google, creare un foglio di calcolo con un foglio di lavoro denominato Contact.To create a table to use with this example in Google Docs, create a spreadsheet with a worksheet named Contact. Il connettore non può usare il nome visualizzato del foglio di calcolo.The connector cannot use the spreadsheet display name. Il nome interno (in grassetto) deve essere usato come dataSetName, ad esempio: docs.google.com/spreadsheets/d/1UIz545JF_cx6Chm_5HpSPVOenU4DZh4bDxbFgJOSMz0 Aggiungere i nomi di colonna Id, LastName, FirstName alla prima riga, quindi inserire dati nelle righe successive.The internal name (in bold) needs to be used as dataSetName, for example: docs.google.com/spreadsheets/d/1UIz545JF_cx6Chm_5HpSPVOenU4DZh4bDxbFgJOSMz0 Add the column names Id, LastName, FirstName to the first row, then populate data on subsequent rows.

SalesforceSalesforce

Per usare questo esempio con Salesforce, dataSetName è "default".To use this example with Salesforce, dataSetName is “default.”

ConfigurazioneConfiguration

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.The following table explains the binding configuration properties that you set in the function.json file.

Proprietà di function.jsonfunction.json property DESCRIZIONEDescription
typetype Il valore deve essere impostato su apiHubTable.Must be set to apiHubTable. Questa proprietà viene impostata automaticamente quando si crea il trigger nel portale di Azure.This property is set automatically when you create the trigger in the Azure portal.
directiondirection Il valore deve essere impostato su in.Must be set to in. Questa proprietà viene impostata automaticamente quando si crea il trigger nel portale di Azure.This property is set automatically when you create the trigger in the Azure portal.
nomename Nome della variabile che rappresenta l'elemento evento nel codice della funzione.The name of the variable that represents the event item in function code.
connessioneconnection Identifica l'impostazione dell'app che archivia la stringa di connessione API.Identifies the app setting that stores the API connection string. L'impostazione dell'app viene creata automaticamente quando si aggiunge una connessione API nell'interfaccia utente integrata.The app setting is created automatically when you add an API connection in the integrate UI.
dataSetNamedataSetName Nome del set di dati che contiene la tabella da leggere.The name of the dataset that contains the table to read.
tableNametableName Nome della tabellaThe name of the table
entityIdentityId Deve essere vuoto per le associazioni di tabella.Must be empty for table bindings.

Un connettore tabulare fornisce set di dati e ogni set di dati contiene tabelle.A tabular connector provides data sets, and each data set contains tables. Il nome del set di dati predefinito è "default".The name of the default data set is “default.” I titoli di un set di dati e di una tabella in diversi provider SaaS sono elencati di seguito:The titles for a dataset and a table in various SaaS providers are listed below:

ConnettoreConnector Set di datiDataset TabellaTable
SharePointSharePoint SitoSite Elenco SharePointSharePoint List
SQLSQL DatabaseDatabase TabellaTable
Fogli GoogleGoogle Sheet Foglio di calcoloSpreadsheet Foglio di lavoroWorksheet
ExcelExcel File di ExcelExcel file FoglioSheet

Passaggi successiviNext steps