Fermer

    De quel département êtes-vous ?

    Vos informations générales

    Quel est votre objectif ?

    Quel est le nombre d'utilisateurs
    pour votre projet ?

    A quelle étape vous trouvez-vous actuellement ?

    Quel est le délais de mise en place que vous souhaitez ?

    Précédent

    Déclenchez le signal !
    Nous sommes les héros de Tableau Software, Microsoft Power BI et Alteryx ? Découvrez quelques unes de nos réalisations Let's rock ! Led Zeppelin et le basketball français en statistiques.

    Maîtrisez votre temps !
    Nous travaillons avec les outils Snowflake, Gathering Tools et Alteryx. Découvrez le retour de nos clientsOney Data et Keolis

    Votre futur vous attend !

    Découvrez notre Data Driven Journey et la solution Alteryx.

    Rassemblons vos forces !

    Découvrez notre Data Driven Journey et notre communauté. Renseignez-vous sur nos formation au Data-Universe.

    Drive your insights!

    Découvrez notre Communauté et nos réalisations Let's rock ! Led Zeppelin et la gestion d'une équipe de basketball en statistiques.

    Évoluez à l'infini et au-delà !

    Découvrez notre méthode exclusive : Data Driven Journey. Accédez à notre panel de formations.

    Dossier

    Snowflake Data Sharing

    Rédigé par Radoslav Ilchev – Consultant Actinvision

    Cas d’utilisation de la donnée partagée

    Les cas d’usages sont nombreux en interne, partager les informations de vente et des clients à l’équipe marketing pour mieux cibler les clients et dynamiser les ventes est un grand classique. Le chalenge aujourd’hui va plus loin vers une entreprise interconnectée avec le monde extérieur. Ceci pour intégrer de la donnée externe pour avoir des analyses encore plus pertinentes mais aussi pour partager de la donnée à l’extérieur vers nos clients et partenaires. Partager de la donnée permet de faciliter les échanges, gagner en productivité mais surtout valoriser et monétiser les données fournies. Les applications se démocratisent et gagnent du terrain dans les domaines du jeu en ligne, des services cloud/IoT, mais également dans la grande distribution et le BtoC de manière plus général. J’ai pu assister récemment à un excellent témoignage de « Starbreeze » un éditeur de jeux vidéo et les énormes avantages à avoir la connaissance live sur l’utilisation de leurs jeux et les interactions des joueurs. Ce partage de données a été réalisé avec le Data Sharing de Snowflake.  Les données ont été récoltées et mis à disposition par leurs fournisseurs de services backend PlayFab. Platform backend pour les jeux en temps réel de Microsoft Azure.

    Un bel exemple mais les applications peuvent être multiples ; distributeur, est-ce que j’ai un moyen efficace d’analyser et de partager les données de vente avec mes fournisseurs ? Les données IoT ou encore les données de nos portables sont omniprésentes. Est-ce que je dispose de moyens efficaces pour travailler pleinement avec ces données ?  Il y a un vrai potentiel pour établir une collaboration autour de la donnée avec nos partenaires commerciaux.

    Partager des données simple et efficace

    Traditionnellement le processus de partage de données implique une phase d’export pour produire les données et une phase d’import des données avec une complexité importante. Même si aujourd’hui des outils ETL/ELT, des stockages cloud et des API modernes simplifient la démarche, le travail reste conséquent et souvent réalisé en double chez le fournisseur de données et chez le consommateur.

    Aujourd’hui c’est possible de faire plus efficace, plus simple et plus sécurisé. J’aimerais vous parler de Snowflake et Snowflake Data Sharing.

    Snowflake l’entrepôt de données conçu pour le cloud avec un fonctionnement SaaS. Performance, concurrence, simplicité sont les 3 mots que l’éditeur utilise à juste titre pour décrire cette solution d’entrepôt de données cloud.

    Snowflake Data Sharing, propose une solution innovante pour le  partage de données et permet aux entreprises de partager leurs données en temps réel, de façon sécurisé et disponible directement dans l’entrepôt de données du partenaire sans aucune copie physique de la donnée. Les technologies cloud utilisées permettent d’éliminer la concurrence sur la même donnée physique et les sollicitations extérieures multiples.

    Le fournisseur partage de manière simple ces données, qui sont stockées de manière unique dans son compte Snowflake, avec un ou plusieurs consommateurs tout en gardant la maîtrise et la sécurité des informations partagées. Les consommateurs utilisent immédiatement et directement les données dans son instance Snowflake en utilisant du SQL et avec des connexions natives avec la plupart des outils BI ou ETL mais aussi du JDBC, ODBC, Spark, R etc.

    Voici un schéma montrant la différence entre le modèle historique par recopie et le modèle de Snowflake.

    Snowflake Data Sharing

    Comment c’est possible ?

    L’architecture Snowflake multi-cluster avec partage des données, pensée et créée pour le cloud rend possible cette solution. C’est un système intégré qui permet de complètement dissocier le stockage, la puissance de calcul et les services.

    La séparation des services liés au stockage et au calcul permet à plusieurs entrepôts virtuels (clusters de calcul) de traiter simultanément les mêmes données. La concurrence est ainsi virtuellement illimitée.

    La couche de service est le cerveau de la solution, elle fédère et rend l’utilisation de la solution simple et transparente toute en assurant l’authentification, la sécurité, la consistance, etc.
    Snowflake architecture

    Mise en œuvre

    Penchons-nous sur comment implémenter un Snowflake Data Sharing.

    Il faut commencer par créer le Share chez le fournisseur. Ce partage est un objet logique qui contient les références vers les objets d’une base de données que le fournisseur souhaite partager avec ces consommateurs. Il faut avoir le rôle account admin ou avoir le privilège create share pour le faire.

    Voici les cinq étapes :

    1. Créer le Share
    2. Ajouter les privilèges pour les objets parents
    3. Ajouter les objets à partager
    4. Ajouter un ou plusieurs consommateurs
    5. Instancier une base de données chez le consommateur

    Snowflake nous permet de facilement le faire et administrer le contenu et les consommateurs directement avec l’interface web en quelques clics, mais aussi avec des commandes SQL spécifiques (CREATE SHARE, ALTER SHARE etc.)

    Pour les étapes 1, 2 et 3, voici comment créer le Share dans l’interface en donnant un nom et en sélectionnant les objets à partager.

    Snowflake data sharing
    Snowflake data sharing
    Snowflake data sharing

    L’équivalent en SQL est également disponible via le bouton show SQL .

    CREATE SHARE “DEMO_SHARE” COMMENT=’My demo share’;
    GRANT USAGE ON DATABASE “SHARE_DB” TO SHARE “DEMO_SHARE”;
    GRANT USAGE ON SCHEMA “SHARE_DB”.”PUBLIC” TO SHARE “DEMO_SHARE”;
    GRANT SELECT ON VIEW “SHARE_DB”.”PUBLIC”.”METEO_FR” TO SHARE “DEMO_SHARE”;

    –vérifier le contenu.

    SHOW GRANTS TO SHARE DEMO_SHARE;

    4.      Ajouter un ou plusieurs consommateurs

    Ensuite vous pouvez ajouter les consommateurs de votre partage. Il y a deux types de consommateurs :

    Full – il s’agit des consommateurs qui ont leur propre compte Snowflake existant. Ces consommateurs utilisent leur propre puissance de calcul (entrepôts virtuels) et finance donc eux-mêmes la consommation des données. Seul le coût du stockage très faible revient au fournisseur. Ils sont aussi maîtres de leur consommation et ne payeront que pour leur consommation réelle.

    Reader – ce titre correspond à un compte lecteur créé et géré par le fournisseur dans but de partager les données avec ce dernier. C’est le fournisseur qui est responsable de la configuration de ce compte. Le coût de l’utilisation de ce compte revient aux fournisseurs. Les bonnes pratiques impliqueront la création de rôles spécifiques, entrepôt virtuel et monitoring des ressources selon le besoin. Le compte account admin reste chez le fournisseur en principe.

    Retrouvez l’ensemble des préconisations dans la documentation proposée par Snowflake en cliquant sur ce lien

    4 a. Ajouter un ou plusieurs consommateurs possédant un compte Snowflake

    Méthode interface et SQL disponibles

    Snowflake data sharing

    ALTER SHARE “DEMO_SHARE” ADD ACCOUNTS = ACCOUNT_TEST123;

    Vous allez avoir une erreur si le compte Snowflake cible n’existe pas dans la même région que celle du fournisseur.  Pour le moment le partage est possible uniquement avec des comptes de la même région et dans le même cloud. L’équipe Snowflake est bien au fait de cette limitation et travaille sur des évolutions qui permettraient de faire du partage entre région et même entre fournisseur cloud dans le futur.

    4 b. Création d’un compte lecteur (Managed Reader account)

    Cette instance est avec le même niveau de licence, même cloud et même région que le compte Snowflake du fournisseur. Pour rappel le coût associé avec l’utilisation de ce compte est à la charge du fournisseur.

    Snowflake data sharing

    Bien évidement il est possible de réaliser la même manipulation en SQL.

    CREATE MANAGED ACCOUNT DEMO_READER_ACT1 admin_name=’DEMOUSER1′, admin_password=’SOMESTRONGPASSWORDSTRING’, type=reader, COMMENT=’Demo reader account 1 ‘;

    Félicitations votre consommateur a un compte lecteur sur Snowflake !

    Snowflake data sharing
    N’oubliez pas de l’ajouter dans le consommateur de votre partage.

    Snowflake data sharing

    5. Instancier une base de données chez le consommateur

    Pour ce faire, il faut définir une base de données pour héberger le partage. Ceci est vrai pour un consommateur Full et pour un consommateur Reader Account.
    Snowflake data sharing Snowflake data sharing

    Niveau avancé – Secure View et filtrage dynamique des données

    La vue sécurisée est la méthode privilégiée  pour partager en toute sécurité la donnée dans Snowflake. Elle présente des avantages non négligeables, car le SQL spécifique à la création ainsi que les champs et les tables sous-jacentes ne sont visibles que par le rôle propriétaire de la vue sécurisée.

    Cependant, l’optimisateur de requête ne voit pas les tables sous-jacentes et n’optimise donc pas les requêtes. En cas de problèmes de performance, il faudra probablement optimiser les clés de clustering des tables manuellement.

    Ces vues sont facilement reconnaissables par le symbole de cadenas dans l’interface.
    Snowflake data sharing
    En plus Snowflake nous donne la possibilité de dynamiquement filtrer les lignes d’une vue sécurisée selon le compte consommateur et de n’exposer ainsi qu’une sous partie de la vue. Un exemple classique serait d’avoir une table unique avec l’utilisation d’un service et rendre visible pour un client uniquement le sous ensemble de lignes avec les informations sur son utilisation propre.
    Snowflake data sharing

    Pour implémenter cette stratégie nous avons besoin d’une table de mapping qui nous donne la correspondance entre les comptes consommateur et une colonne d’information à filtrer dans nos données.

    Prenons un exemple où nous avons une table avec des données météo de la France entière et que j’ai un client.

    ‘ACCOUNT_TEST123’ qui a le droit de voir uniquement les données pour Strasbourg
    ‘ACCOUNT_TEST124’ qui a le droit de voir uniquement les données pour Paris

    1. Créer la table de mapping et lister les autorisations

    CREATE TABLE ACCOUNT_MAPPING_TABLE (
    ACCOUNT_ID VARCHAR(50),
    VILLE VARCHAR(250));

    — Autoriser/lister  ‘ACCOUNT_TEST123’ pour Strasbourg

    Insert INTO ACCOUNT_MAPPING_TABLE (ACCOUNT_ID, VILLE)
    values (‘ACCOUNT_TEST123’, ‘Strasbourg’);

    — Autoriser/lister  ‘ACCOUNT_TEST124’ pour Paris

    Insert INTO ACCOUNT_MAPPING_TABLE (ACCOUNT_ID, VILLE)
    values (‘ACCOUNT_TEST124’, ‘Paris’);

    — Autoriser le compte fournisseur de voir 3 villes pour l’exemple. (Remplacez ‘MYACCOUNT’ avec le vôtre)

    Insert INTO ACCOUNT_MAPPING_TABLE (ACCOUNT_ID, VILLE)
    values (‘MYACCOUNT’, ‘Colmar’);
    Insert INTO ACCOUNT_MAPPING_TABLE (ACCOUNT_ID, VILLE)
    values (‘MYACCOUNT’, ‘Paris’);
    Insert INTO ACCOUNT_MAPPING_TABLE (ACCOUNT_ID, VILLE)
    values (‘MYACCOUNT’, ‘Strasbourg’);

    2. Création d’une vue sécurisée

    create secure view SHARE_SV_METEO_FR
    as select PAYS, METEO_FR.VILLE, METEO_PRINCIPALE, TEMPERATURE_CELSIUS
    from METEO_FR  inner join PRIVATE_SH.ACCOUNT_MAPPING_TABLE ACC
    on METEO_FR.VILLE = ACC.VILLE
    WHERE ACC.ACCOUNT_ID = CURRENT_ACCOUNT();

    3. Vérification des données visibles

    Aperçu de la table de mapping

    Snowflake data sharing

    Une première requête avec le compte fournisseur ayant le droit de voir Colmar, Paris et Strasbourg.
    Snowflake data sharing

    Pour tester et simuler les connexions à partir d’un autre compte nous pouvons utiliser le paramètre de session SIMULATED_DATA_SHARING_CONSUMER.
    Voici les résultats obtenus avec les deux comptes de test.

    ‘ACCOUNT_TEST123’ qui a le droit de voir uniquement les données pour Strasbourg

    Snowflake data sharing
    ‘ACCOUNT_TEST124′ qui a le droit de voir uniquement les données pour Paris

    Snowflake data sharing

    Cas d’usages

    PlayFab de Microsoft est une plateforme back-end pour les éditeurs de jeux en temps réel. Le service gère plus de 90 millions de joueurs dans le monde. PlayFab utilise le Share de Snowflake pour permettre aux éditeurs de jeux d’avoir un accès complet à leurs informations : services de jeu, analytique données et outils LiveOps.

    PlayFab and Snowflake Data Sharing [EN]

    Une référence française est le leader du prêt-à-porter Camaïeux qui s’est lancé dans l’implémentation d’un partage de données à destination de ces fournisseurs.

    Article Camaïeu mise sur Snowflake et le Data Sharing pour accélérer et simplifier la manipulation de ses données

    Ressources complémentaires

    Présentation vidéo du Snowflake Data Sharing [EN]