Database
 sql >> Base de données >  >> RDS >> Database

Connexion de PolyBase à Salesforce.com

PolyBase accède et combine les données non relationnelles et relationnelles, le tout depuis SQL Server. À partir de SQL Server 2019, PolyBase prend en charge les données des backends pour lesquels un pilote ODBC est disponible.

Nous avons essayé PolyBase avec notre pilote ODBC Salesforce, pour interroger les données Salesforce de SQL Server 2019.

Pour commencer :

  1. Installez et mettez sous licence le pilote ODBC Salesforce.com sur la machine sur laquelle SQL Server est installé.

    Vous avez besoin de la version 2.0.3 du pilote ODBC Salesforce.com, qui est actuellement disponible en contactant l'équipe de support Easysoft ().

  2. Dans Microsoft SQL Server Management Studio, connectez-vous à votre instance SQL Server compatible PolyBase. Pour vérifier si PolyBase est installé, exécutez cette requête :
    SELECT SERVERPROPERTY ('IsPolyBaseInstalled') AS IsPolyBaseInstalled;

    Si PolyBase est installé cette requête renverra :

    1
  3. Vous devez également vous assurer que PolyBase est activé :
    EXEC SP_CONFIGURE @CONFIGNAME = 'polybase enabled', @CONFIGVALUE = 1;
    RECONFIGURE WITH OVERRIDE;
  4. Si vous ne l'avez pas déjà fait, démarrez les services PolyBase (SQL Server PolyBase Engine, SQL Server PolyBase Data Movement) dans l'application Windows Services.
  5. Créer une source de données externe PolyBase :
    CREATE DATABASE PolyBaseDB
    
    USE PolyBaseDB
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'p455w0rd';
    
    CREATE DATABASE SCOPED CREDENTIAL PolyBaseSalesforce
    WITH IDENTITY = 'myuser, Secret = 'p455w0rd';
    
    CREATE EXTERNAL DATA SOURCE salesforce_data_source
    WITH ( 
    LOCATION = 'odbc://Salesforce',
    CONNECTION_OPTIONS = 'DRIVER={Easysoft Salesforce ODBC Driver};
                          UID=mysalesforceuser@mydomain;
                          PWD=mypassword;TOKEN=1234ABCDEF;',
    CREDENTIAL = PolyBaseSalesforce
    );
    
  6. Créez une table SQL Server locale qui contiendra les données Salesforce distantes. Cette table locale est pour la table Account Salesforce :
    CREATE EXTERNAL TABLE Account([Id] NCHAR(18) COLLATE Latin1_General_CI_AS NOT NULL, [IsDeleted] TINYINT NOT NULL,
    	                      [MasterRecordId] NCHAR(18) COLLATE Latin1_General_CI_AS,
    			      [Name] NVARCHAR(255) COLLATE Latin1_General_CI_AS NOT NULL, [Type] NVARCHAR(255) COLLATE Latin1_General_CI_AS,
    			      [ParentId] NCHAR(18) COLLATE Latin1_General_CI_AS, [BillingStreet] NVARCHAR(4000) COLLATE Latin1_General_CI_AS,
    			      [BillingCity] NVARCHAR(40) COLLATE Latin1_General_CI_AS, [BillingState] NVARCHAR(80) COLLATE Latin1_General_CI_AS,
                                  [BillingPostalCode] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [BillingCountry] NVARCHAR(80) COLLATE Latin1_General_CI_AS,
    			      [BillingStateCode] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [BillingCountryCode] NVARCHAR(255) COLLATE Latin1_General_CI_AS,
    			      [BillingLatitude] FLOAT(53), [BillingLongitude] FLOAT(53), [BillingAddress] NVARCHAR(4000) COLLATE Latin1_General_CI_AS,
    			      [ShippingStreet] NVARCHAR(4000) COLLATE Latin1_General_CI_AS, [ShippingCity] NVARCHAR(40) COLLATE Latin1_General_CI_AS,
    			      [ShippingState] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [ShippingPostalCode] NVARCHAR(20) COLLATE Latin1_General_CI_AS,
    			      [ShippingCountry] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [ShippingStateCode] NVARCHAR(255) COLLATE Latin1_General_CI_AS,
    			      [ShippingCountryCode] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [ShippingLatitude] FLOAT(53), [ShippingLongitude] FLOAT(53),
    			      [ShippingAddress] NVARCHAR(4000) COLLATE Latin1_General_CI_AS, [Phone] NVARCHAR(40) COLLATE Latin1_General_CI_AS,
    			      [Fax] NVARCHAR(40) COLLATE Latin1_General_CI_AS, [AccountNumber] NVARCHAR(40) COLLATE Latin1_General_CI_AS,
    			      [Website] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [PhotoUrl] NVARCHAR(255) COLLATE Latin1_General_CI_AS,
    			      [Sic] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [Industry] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [AnnualRevenue] FLOAT(53),
    			      [NumberOfEmployees] INT, [Ownership] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [TickerSymbol] NVARCHAR(20) COLLATE Latin1_General_CI_AS,
    			      [Description] NVARCHAR(4000) COLLATE Latin1_General_CI_AS, [Rating] NVARCHAR(255) COLLATE Latin1_General_CI_AS,
    			      [Site] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [OwnerId] NCHAR(18) COLLATE Latin1_General_CI_AS NOT NULL,
    			      [CreatedDate] DATETIME2(0) NOT NULL, [CreatedById] NCHAR(18) COLLATE Latin1_General_CI_AS NOT NULL,
    			      [LastModifiedDate] DATETIME2(0) NOT NULL, [LastModifiedById] NCHAR(18) COLLATE Latin1_General_CI_AS NOT NULL,
    			      [SystemModstamp] DATETIME2(0) NOT NULL, [LastActivityDate] DATE, [LastViewedDate] DATETIME2(0), [LastReferencedDate] DATETIME2(0),
    			      [Jigsaw] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [JigsawCompanyId] NVARCHAR(20) COLLATE Latin1_General_CI_AS,
    			      [AccountSource] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [SicDesc] NVARCHAR(80) COLLATE Latin1_General_CI_AS,
    			      [CustomerPriority__c] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [SLA__c] NVARCHAR(255) COLLATE Latin1_General_CI_AS,
    			      [Active__c] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [NumberofLocations__c] FLOAT(53),
    			      [UpsellOpportunity__c] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [SLASerialNumber__c] NVARCHAR(10) COLLATE Latin1_General_CI_AS,
    			      [SLAExpirationDate__c] DATE)
    	WITH (LOCATION='Account', DATA_SOURCE= salesforce_data_source)
  7. Interrogez les données distantes :
    SELECT Id FROM dbo.Account WHERE Id = '001i000000AOq3DXYZ'