Dans cet article, je veux montrer en détail comment vous pouvez utiliser R dans Microsoft SQL Server pour obtenir des données de Google Analytics (et généralement de n'importe quelle API).
La tùche - nous avons MS SQL Server et nous voulons recevoir des données en DWH par API
Nous utiliserons le package googleAnalyticsR pour nous connecter Ă Google Analytics (GA).
Ce package est choisi à titre d'exemple en raison de sa popularité. Vous pouvez utiliser un autre package, par exemple: RGoogleAnalytic .
Les approches de rĂ©solution des problĂšmes seront les mĂȘmes.
Installer R sur MS SQL Server
cela se fait via l'interface standard pour l'installation des composants MS SQL.



- Il s'agit de R avec lequel SQL Server interagira directement (appelĂ© dans les requĂȘtes SQL).
- Vous pouvez travailler avec la copie du client R de R Studio sans craindre de casser quelque chose sur le serveur de base de données.
Acceptez le contrat de licence et faites attention à ce que R ordinaire ne soit pas installé mais Microsoft R Open

En bref, ce que c'est:
Microsoft prend R Open, l'améliore avec ses packages et distribue gratuitement.
Par conséquent, les packages de cette version R sont disponibles au téléchargement non pas dans CRAN , mais dans MRAN .
Il y a plus Ă venir. En fait, lors de l'installation de MS SQL, nous n'obtenons pas un MRAN propre, mais quelque chose de plus - Microsoft ML Server .
Cela signifie pour nous qu'il y aura des packages supplémentaires dans l'ensemble des bibliothÚques R - RevoScaleR .
RevoScaleR est conçu pour traiter les mégadonnées et créer des modÚles d'apprentissage automatique sur de grands ensembles de données.
Ces informations doivent ĂȘtre gardĂ©es Ă l'esprit car il existe une forte probabilitĂ© de questions liĂ©es aux diffĂ©rentes versions R.
AprÚs avoir installé les composants, nous obtenons l'interaction Microsoft R.

Cette console n'est pas trÚs pratique à utiliser, alors téléchargez et installez immédiatement la version gratuite RStudio .
Exécutez les scripts suivants dans SSMS:
Autoriser l'exécution des scripts sur SQL Server
sp_configure 'external scripts enabled', 1; RECONFIGURE WITH OVERRIDE;
Redémarrage SQL du serveur

Assurez-vous que les scripts R sont exécutés
EXECUTE sp_execute_external_script @language =N'R', @script=N'print(version)';
Rechercher l'emplacement des packages R utilisés par SQL Server
declare @Rscript nvarchar(max) set @Rscript = N' InstaledLibrary <- library() InstaledLibrary <- as.data.frame(InstaledLibrary$results ) OutputDataSet <- InstaledLibrary ' EXECUTE sp_execute_external_script @language = N'R' , @script = @Rscript WITH RESULT SETS (([Package] varchar(255) NOT NULL, [LibPath] varchar(255) NOT NULL, [Title] varchar(255) NOT NULL));

Dans mon cas, le chemin d'accĂšs aux packages R MS SQL:
C: / Program Files / Microsoft SQL Server / MSSQL14.MSSQLSERVER / R_SERVICES / library
Exécutez RStudio.
Il y a de fortes chances que plusieurs versions R soient installées sur l'ordinateur, vous devez donc vous assurer que nous travaillons avec la version de SQL Server.


Les paramÚtres seront appliqués aprÚs le redémarrage de RStudio.
Installez le package googleAnalyticsR
Pour RStudio Ă l'aide de la commande
library()
Découvrez le chemin d'accÚs à la bibliothÚque de packages de la version du client R (avec laquelle RStudio fonctionne)

Dans mon cas, ce chemin:
C: / Program Files / Microsoft SQL Server / 140 / R_SERVER / bibliothĂšque
Installez le package googleAnalyticsR via RStudio


Voici quelques nuances ombrées:
Vous ne pouvez pas simplement ajouter tout ce que vous voulez aux dossiers systÚme MS SQL. Les packages seront enregistrés dans un répertoire temporaire sous forme d'archives ZIP.

Accédez au dossier temporaire et décompressez tous les packages dans l'Explorateur.

Les packages dĂ©compressĂ©s doivent ĂȘtre copiĂ©s dans le rĂ©pertoire de la bibliothĂšque R Services (avec lequel le serveur MS SQL fonctionne).
Dans mon exemple, c'est le dossier
C: / Program Files / Microsoft SQL Server / MSSQL14.MSSQLSERVER / R_SERVICES / library
Les packages dĂ©compressĂ©s doivent Ă©galement ĂȘtre copiĂ©s dans la version du client R (avec laquelle RStudio fonctionne)
Dans mon exemple, c'est le dossier
C: / Program Files / Microsoft SQL Server / 140 / R_SERVER / bibliothĂšque
(nous avons appris ces chemins à partir de scripts exécutés précédemment)
Avant de copier dans le dossier R Services, il est préférable d'enregistrer une copie du dossier de la bibliothÚque. L'expérience a prouvé qu'il existe des situations différentes et il vaut mieux pouvoir revenir aux packages existants.
Lors de la copie, remplacez tous les packages existants.
Pour consolider la compétence, répétez l'exercice.
Seulement maintenant, nous n'installons pas de packages, mais mettons Ă jour tous les packages existants.
(ce n'est pas nécessaire pour se connecter à GA, mais il est préférable d'avoir les derniÚres versions de tous les packages)
Rechercher de nouveaux packages dans RStudio

Les packages seront téléchargés dans un dossier temporaire.
Effectuez les mĂȘmes actions que lors de l'installation de nouveaux packages.
Vérification de l'accÚs Internet MS SQL
declare @Rscript nvarchar(max) set @Rscript = N' library(httr) HEAD("https://www.yandex.ru", verbose()) ' EXECUTE sp_execute_external_script @language = N'R' , @script = @Rscript
Ătant donnĂ© que SQL Server n'a pas accĂšs Ă Internet par dĂ©faut, il est probable que le script prĂ©cĂ©dent provoquera l'erreur suivante.

Fournissez un accĂšs Internet aux scripts R Ă partir de SQL.
SQL 2017

SQL 2019

En ssms
Obtenez un jeton Google Analytics
Exécutez le code suivant dans RStudio:
Cela ouvrira la fenĂȘtre d'authentification des services Google dans votre navigateur. Vous devrez vous connecter et donner l'autorisation d'accĂ©der Ă Google Analytics.
Dans SSMS, assurez-vous que le jeton de Google est reçu et enregistré dans la base de données
Select * from [GA].[token]
Vérifier la connexion à GA via RStudio
Si tout s'est bien passĂ©, ajoutez le script R Ă SQL et exĂ©cutez la requĂȘte.
drop table if exists
Faites attention que le script utilise un nom d'utilisateur et un mot de passe, ce qui est une bonne chose.
Par conséquent, nous modifions la chaßne de connexion en authentification Windows.
conStr <- ''Driver={SQL Server};Server=EC2AMAZ-68OQ7JV;Database=Demo;Trusted_Connection=true''
AprÚs avoir modifié la méthode d'authentification, vous devrez ajouter des droits d'accÚs à la base de données au service appelant R.

(Bien sûr, il est préférable de travailler avec des groupes d'utilisateurs. J'ai simplifié la solution dans le cadre de la démonstration)
Nous exĂ©cutons la requĂȘte SQL comme une procĂ©dure.
Create procedure Ga.Get_session @Date_start date ='2019-01-01', @Date_End date ='2019-08-01' as drop table if exists
Vérifiez le fonctionnement de la procédure
Le script R n'est pas compliquĂ©, il peut toujours ĂȘtre copiĂ© dans R Studio. Modifiez et enregistrez dans la procĂ©dure SQL.
Par exemple, je n'ai modifié que le paramÚtre des dimensions et je peux maintenant charger la page de destination par date.
Create procedure [GA].[Get_landingPage_session] @Date_start date ='2019-01-01', @Date_End date ='2019-08-01' as drop table if exists
vérification
exec [GA].[Get_landingPage_session]
Fondamentalement, c'est tout.
Je voudrais noter qu'en utilisant R via SQL, vous pouvez obtenir des données à partir de n'importe quelle API.
Par exemple: recevoir des taux de change.
ou obtenir des données de la premiÚre API disponible, certaines fermes en Australie ...
Au total:
â les mots de passe de connexion ne sont stockĂ©s nulle part
â les droits sont distribuĂ©s de maniĂšre centralisĂ©e via les comptes Active Directory
â aucun fichier de configuration supplĂ©mentaire
â aucun violon Python contenant des mots de passe pour la base de donnĂ©es
â tout le code est stockĂ© dans les procĂ©dures et enregistrĂ© lors de la sauvegarde de la base de donnĂ©es
La sauvegarde de la base de données MS SQL 2017 avec le code complet est disponible ici
(pour la lecture, vous devez installer des packages, distribuer les droits, spécifier le nom de votre serveur)