Importer des fichiers depuis d'autres projets

Vous pouvez importer des fichiers d'autres projets LookML et de dépôts externes dans votre projet actuel. Cela vous permet d'utiliser des fichiers de modèle, d'afficher des fichiers et d'autres fichiers dans plusieurs projets.

Il existe plusieurs cas d'utilisation. Quelques exemples :

  • S'appuyer sur un bloc Looker installé sans avoir à y apporter de modifications directes. Si Looker apporte des modifications au bloc, vous pouvez les récupérer, car tout le code LookML que vous y avez ajouté est conservé dans un référentiel distinct.

  • Gérer un projet de base généré automatiquement en fonction du schéma de base de données Vous pouvez placer toutes vos dimensions, mesures et autres éléments personnalisés dans un projet distinct qui importe tout le code LookML du projet généré automatiquement. Vous pouvez régénérer régulièrement le projet de base à mesure que le schéma de la base de données change, sans écraser l'intégralité de votre code LookML personnalisé.

  • Encapsuler des objets partagés dans un seul projet, puis les importer dans plusieurs autres projets Par exemple, si vous disposez d'une table commune à plusieurs bases de données, vous pouvez placer la vue correspondante dans un projet et la conserver à cet endroit. Ensuite, demandez à plusieurs autres projets de l'utiliser en important la table dans ces projets.

Pour importer des fichiers d'un autre projet, procédez comme suit:

  1. Créez un fichier manifeste de projet.
  2. Spécifiez les projets locaux ou distants que vous souhaitez importer.
  3. Affichez les fichiers d'un projet importé.
  4. Inclure les fichiers d'un projet importé

Vous pourrez ensuite référencer des champs à partir des fichiers du projet importé et remplacer les valeurs des constantes définies dans le projet importé si les constantes allow override.

Créer un fichier manifeste de projet

Tout projet qui importe des fichiers provenant d'autres projets doit disposer d'un fichier manifeste de projet. Si votre projet ne contient pas encore de fichier manifeste, vous pouvez en créer un en cliquant sur l'icône + en haut de l'explorateur de fichiers dans l'IDE Looker.

Pour importer des projets, spécifiez-les dans le fichier manifeste. Vous pouvez spécifier des projets locaux ou distants, comme décrit dans les sections suivantes.

Importer des projets locaux

Vous ne pouvez utiliser l'importation de projet local que si le projet importé se trouve sur la même instance Looker. Il est également recommandé aux développeurs de disposer d'autorisations sur les modèles pour les modèles du projet importé. Si vos développeurs disposent d'autorisations pour les modèles dans le projet importé, la gestion des versions sera dynamique. Cela signifie que les modifications apportées au projet importé auront une incidence immédiate sur le projet qui l'importe. Cela permet aux développeurs de valider les modifications apportées dans les deux projets avant de passer en production. Par ailleurs, pour les développeurs disposant d'autorisations pour les modèles dans les deux projets, les fichiers de projet importés reflètent l'état Mode Développement du développeur. Ainsi, si le développeur est en mode Développement, l'IDE Looker affichera le mode Développement des fichiers du projet importé. Si le développeur est en mode Production, l'IDE Looker affiche le mode Production du projet importé.

Dans le fichier manifeste, le paramètre project_name spécifie le nom du projet en cours (Looker renseigne automatiquement ce paramètre lorsque vous créez le fichier manifeste pour le projet). Pour importer un projet local dans le projet actuel, utilisez un ou plusieurs paramètres local_dependency afin de spécifier le ou les projets à importer:

# This project
project_name: "my_project"

# The project to import
local_dependency: {
  project: "my_other_project"
}

Dans les scénarios suivants, il est préférable d'utiliser l'importation de projet distant plutôt que l'importation de projet local:

  • Vos développeurs ne disposent pas d'autorisations pour les modèles du projet importé. Dans ce cas, Looker crée un clone du mode Production du projet importé et affiche cette version statique des fichiers dans l'IDE. Cette version statique n'affichera jamais la version en mode Développement des fichiers et peut également être obsolète avec le mode Production actuel sans avertir le développeur. Il est préférable d'utiliser l'importation de projet à distance et de fournir un ref qui spécifie une branche Git ou une version Git dans le projet distant. Dans ce cas, Looker détecte automatiquement les nouveaux commits dans le projet distant. Vos développeurs sont ainsi avertis et peuvent alors importer la dernière version des fichiers du projet distant.
  • Vos développeurs doivent toujours travailler avec la version de production d'un projet importé.
  • Vos développeurs doivent travailler avec une version statique des fichiers du projet importé.

Importer des projets distants

Dans une importation à distance, le projet importé n'a pas besoin de se trouver sur la même instance. À la place, le projet est importé via son dépôt Git distant.

Pour importer un dépôt distant, utilisez le paramètre remote_dependency afin de fournir les informations du dépôt distant. Le paramètre remote_dependency comporte les informations et sous-paramètres suivants:

  • Nom du projet importé, qui peut être le nom de votre choix. Dans l'exemple suivant, le nom du projet est ga_360_block. Vous utiliserez ce nom dans les instructions include pour référencer les fichiers importés dans les projets LookML. Le nom est également utilisé comme nom de dossier sous le dossier imported_projects de l'IDE Looker.
  • Sous-paramètre url, dans lequel vous spécifiez l'adresse du dépôt Git externe. Utilisez l'URL principale du dépôt.
  • Sous-paramètre ref, dans lequel vous spécifiez une branche Git, un tag de version Git ou l'algorithme SHA d'un commit dans le dépôt Git. Vous pouvez spécifier un SHA de commit si vous souhaitez gérer les versions statiques, afin que les modifications apportées au projet importé ne soient pas automatiquement répercutées dans votre projet (il s'agit d'une bonne option pour les blocs Looker). Vous pouvez également spécifier une branche Git ou un tag de version Git si vous souhaitez que Looker détecte automatiquement les nouveaux commits dans le projet distant. Pour en savoir plus, consultez la section Détecter automatiquement les nouvelles versions d'un projet distant sur cette page.
  • Le sous-paramètre override_constant, facultatif, vous permet de remplacer la valeur d'une constante définie dans un projet importé.

Voici un exemple de paramètre remote_dependency dans un fichier manifeste de projet. Cet exemple utilise une connexion HTTPS:

remote_dependency: ga360_block {
  url: "https://github.com/llooker/google_ga360"
  ref: "master"
  override_constant: connection {
    value: "importing_project_connection"
  }
}

Vous pouvez également utiliser SSH:

remote_dependency: ga360_block {
  url: "git@github.com:llooker/google_ga360.git"
  ref: "master"
  override_constant: connection {
    value: "importing_project_connection"
  }
}

Une fois la dépendance distante ajoutée, vous devrez peut-être configurer les identifiants d'importation pour le projet distant. Pour en savoir plus, consultez la section Configurer des identifiants d'authentification pour les dépôts distants privés de cette page.

Détecter automatiquement les nouvelles versions d'un projet distant

Vous pouvez faire en sorte que Looker détecte automatiquement les nouveaux commits dans le projet distant si vous spécifiez une branche ou un tag de version Git dans le sous-paramètre ref de remote_dependency dans votre fichier manifeste.

Par exemple, voici une dépendance distante où la branche master est spécifiée dans le sous-paramètre ref:

remote_dependency: exchange_rate {
  url: "https://github.com/llooker/datablocks-exchangerate.git"
  ref: "master"
}

Par la suite, lorsque la branche master sera mise à jour avec de nouveaux commits, Looker détectera automatiquement les modifications.

Et voici un exemple où le tag de version v1.0 est spécifié:

remote_dependency: e_faa_original {
  url: "https://github.com/llooker/google_ga360"
  ref: "v1.0"
}

Quel que soit le type de valeur spécifié pour le paramètre ref, même un commit SHA, l'IDE affiche le bouton Update Dependencies (Mettre à jour les dépendances) dans la barre de navigation supérieure du projet lorsque vous ajoutez un paramètre remote_dependency à votre projet.

Cliquez sur Mettre à jour les dépendances pour récupérer les fichiers du projet distant. S'il s'agit de la première dépendance distante que vous avez ajoutée à votre projet, la mise à jour des dépendances invitera également Looker à créer un fichier de verrouillage du fichier manifeste. Looker utilise le fichier de verrouillage du manifeste pour suivre la version du ou des projets distants.

Si vous spécifiez une branche Git ou un tag de version Git dans le sous-paramètre ref, Looker recherche de nouveaux commits chaque fois que l'IDE Looker s'actualise, ce qui se produit lorsqu'un développeur Looker passe en mode Développement, effectue une action Git dans l'IDE ou actualise le navigateur.

S'il existe de nouveaux commits, Looker affiche l'option Mettre à jour les dépendances dans le panneau d'actions Git de l'IDE.

Sélectionnez l'option Mettre à jour les dépendances pour importer les derniers fichiers de projet distants dans votre projet.

Une fois que vous disposez des derniers fichiers, vous pouvez valider votre code LookML pour vérifier que toutes les références de votre projet sont compatibles avec les fichiers du projet distant mis à jour. Vous pouvez ensuite corriger les références non fonctionnelles et déployer vos modifications sans temps d'arrêt pour vos utilisateurs.

Fichier de verrouillage du fichier manifeste

Looker utilise le fichier de verrouillage du manifeste portant le nom de fichier manifest_lock.lkml pour suivre les versions des projets importés à distance. Le fichier de verrouillage du fichier manifeste est listé dans le panneau de l'explorateur de fichiers de l'IDE Looker.

Les développeurs Looker n'ont pas besoin de créer ni de modifier le fichier de verrouillage du manifeste, car les fichiers de verrouillage sont gérés automatiquement par Looker.

Le fichier de verrouillage du fichier manifeste affiche chaque projet distant, représenté par une entrée remote_dependency avec les sous-paramètres url et ref:

  • Le paramètre remote_dependency indique le nom du projet distant spécifié par un développeur Looker dans le fichier manifeste.
  • Le sous-paramètre url indique l'adresse du dépôt Git externe spécifié par un développeur Looker dans le fichier manifeste.
  • Le sous-paramètre ref indique la version du projet (indiquée par un commit SHA) que Looker utilise dans votre projet :
    • Si le projet distant a été défini dans le fichier manifeste avec l'ref d'une branche Git ou un tag de version Git, le paramètre ref indique la version des fichiers (le SHA du commit du projet distant) que votre projet utilise actuellement. S'il existe de nouveaux commits dans le projet distant, Looker affiche le bouton Mettre à jour les dépendances dans l'IDE afin que vous puissiez importer les derniers fichiers du projet distant. La valeur ref du fichier de verrouillage du fichier manifeste sera ensuite mise à jour pour afficher le dernier SHA du commit pour cette branche ou ce tag de version.
    • Si le projet distant a été défini dans le fichier manifeste avec un ref d'un SHA de commit spécifique, le paramètre ref du fichier de verrouillage du fichier manifeste sera le même SHA de commit.

Configurer des identifiants d'authentification pour les dépôts distants privés

Pour configurer des identifiants d'authentification pour des dépôts distants privés, accédez à la page Import Credentials (Importer des identifiants) en sélectionnant Settings (Paramètres) dans le volet de navigation de gauche de l'IDE.

Les paramètres Importer des identifiants affichent la liste des URL de chaque dépôt distant défini dans le fichier manifeste du projet, le type d'authentification utilisé pour le dépôt (https ou ssh) et indiquent si Looker peut se connecter au dépôt.

Ajouter des identifiants d'authentification

Pour ajouter des identifiants d'authentification à un dépôt:

  1. Sur la page Import Credentials (Importer des identifiants), sous l'en-tête URL, pointez sur le nom d'un dépôt pour afficher les boutons Test et Configure (Tester), puis cliquez sur Configure (Configurer).

  2. Looker affiche la boîte de dialogue Configure Git Authentication (Configurer l'authentification Git) pour vous permettre de configurer les identifiants pour le dépôt distant. La boîte de dialogue indique le type d'identifiants requis pour ce dépôt particulier.

    • Si le dépôt nécessite un nom d'utilisateur et un mot de passe (ou un jeton d'accès personnel) pour l'authentification, saisissez ces identifiants, puis cliquez sur Enregistrer les modifications.

    • Si le dépôt nécessite une clé SSH, comme dans l'exemple d'utilisation de SSH pour importer un projet distant expliqué plus tôt sur cette page, Looker affiche une boîte de dialogue indiquant votre clé SSH locale. Cliquez sur Copier la clé pour copier la clé SSH dans le presse-papiers et l'ajouter à la liste de clés de votre dépôt.

  3. Après avoir enregistré les identifiants, cliquez sur Tester pour tester l'accès de Looker au dépôt.

    Une fois que vous avez réussi les tests de connexion et que vous vous êtes connecté au dépôt, la section Import Credentials (Importer des identifiants) affiche une coche verte à côté du nom du dépôt.

Modifier les identifiants d'authentification

Pour modifier les identifiants d'authentification d'un dépôt:

  1. Pour afficher les boutons Tester et Modifier, pointez sur un dépôt disposant déjà d'identifiants d'authentification configurés, puis cliquez sur Modifier.

  2. Si le dépôt nécessite un nom d'utilisateur et un mot de passe (ou un jeton d'accès personnel) pour l'authentification, cliquez sur Effacer les identifiants, puis sur Oui, effacer les identifiants dans la boîte de dialogue de confirmation.

  3. Saisissez les nouveaux identifiants dans la boîte de dialogue Configure Git Authentication (Configurer l'authentification Git), puis cliquez sur Save Changes (Enregistrer les modifications).

Afficher les fichiers d'un projet importé

L'IDE Looker affiche les fichiers du projet importés dans le dossier imported_projects du volet de navigation de gauche. Vous pouvez sélectionner un fichier de projet importé pour afficher son contenu.

Les fichiers des projets locaux et des projets distants sont répertoriés dans le dossier imported_projects.

Vous pouvez également afficher les objets des fichiers de projet importés qui sont inclus dans le projet actif à partir du navigateur d'objets. Accédez au navigateur d'objets depuis la barre de navigation de l'IDE Looker.

De plus, les utilisateurs disposant de l'autorisation develop peuvent utiliser le panneau des métadonnées pour afficher des informations sur les objets des projets importés, y compris des liens permettant d'accéder au fichier importé dans lequel l'objet est défini. Pour en savoir plus, consultez la page de documentation Métadonnées pour les objets LookML.

Inclure des fichiers d'un projet importé

Le paramètre include d'un fichier de modèle spécifie les fichiers de projet qui seront disponibles pour ce modèle. Une fois que vous avez spécifié un projet importé local ou à distance dans le fichier manifeste, vous pouvez utiliser le paramètre include dans un fichier de modèle pour spécifier les fichiers du projet importé. Seuls les fichiers dont le projet est listé dans le fichier manifeste peuvent être inclus.

Pour utiliser (include) un fichier d'un autre projet, utilisez le nom du fichier avec deux barres obliques (//) et le nom du projet importé. Après le nom du projet importé, ajoutez une barre oblique (/) et le chemin d'accès complet au fichier que vous souhaitez inclure.

Par exemple, ces commandes include indiquent le fichier de vue users du projet importé e_flights et la vue orders du projet importé e_commerce:

include: "//e_flights/views/users.view.lkml"
include: "//e_commerce/public/orders.view.lkml"

Pour en savoir plus sur la spécification de chemins d'accès lorsque les dossiers IDE sont activés, consultez la section Syntaxe du chemin d'accès sur la page des paramètres include.

Vous pouvez utiliser des caractères génériques pour inclure plusieurs fichiers. Par exemple, pour inclure tous les fichiers de vue du répertoire /views/ du projet importé e_flights:

include: "//e_flights/views/*.view"

De plus, vous pouvez utiliser des caractères génériques pour limiter le champ d'application à des niveaux de répertoire spécifiques ou à des répertoires récursifs dans un projet importé:

include: "//e_flights/*/*.view.lkml"
include: "//e_commerce/*/*.view.lkml"

Consultez la section Exemples de caractères génériques de la page des paramètres include pour en savoir plus sur l'utilisation des caractères génériques lorsque les dossiers IDE sont activés.

Inclure des fichiers de modèle

Vous ne pouvez pas inclure un fichier de modèle provenant d'un autre projet. Si vous souhaitez réutiliser, affiner ou étendre des explorations entre plusieurs projets, vous pouvez créer un fichier d'exploration distinct dans le projet importé, puis l'inclure dans d'autres projets. Pour en savoir plus, consultez la section Inclure des explorations dans un modèle sur la page de documentation du paramètre include.

Inclure des fichiers contenant d'autres fichiers

Lorsque vous incluez un fichier qui inclut d'autres fichiers, toutes les inclusions sont résolues avant que le fichier ne soit transmis au projet suivant qui l'inclut.

Par exemple, si, dans votre projet actuel, vous importez un fichier (A) d'un autre projet (proj_A) et que le fichier importé contient un paramètre include incluant le fichier B du projet proj_B, le fichier B sera inclus dans le fichier A avant que le fichier A ne soit importé dans le projet actuel.

Importer des fichiers de données

Les fichiers stockés dans la section Données d'un projet ne sont pas importés. Pour référencer un fichier de données d'un projet importé, comme dans le paramètre map_layer, utilisez le chemin d'accès complet et le nom du fichier. Exemple :

map_layer: json_from_imported_project {
  file: "//path_to_imported_project/folder/filename.topojson"
  ...
}

Référencer des fichiers à partir d'un projet importé

Après avoir importé un fichier de vue dans votre projet, vous pouvez utiliser la syntaxe ${view_name.field_name} pour référencer les champs de la vue importée comme si le fichier de vue faisait partie de ce projet. Par exemple, supposons que vous ayez importé le projet ga_360_block dans le fichier manifeste de votre projet et que votre fichier de modèle comporte l'instruction include suivante:

include: "//ga_360_block/ga_block.view"

Vous devez utiliser la syntaxe ${ga_block.hits_total} pour référencer le champ hits_total à partir de la vue ga_block incluse.

Utiliser des constantes dans les fichiers d'un projet importé

Les constantes LookML vous permettent de définir une valeur dans le fichier manifeste de votre projet qui peut être réutilisée tout au long de celui-ci. Le sous-paramètre export du paramètre constant indique si la valeur d'une constante peut être remplacée lorsque des fichiers faisant référence à cette constante sont importés dans un autre projet.

Le paramètre export peut avoir les valeurs suivantes:

  • none: valeur par défaut de export. La valeur de la constante ne peut pas être remplacée dans votre projet d'importation. Le projet d'importation utilise la valeur constante spécifiée dans le fichier manifeste du projet importé.
  • override_optional: la valeur de la constante peut éventuellement être remplacée dans votre projet d'importation. Si aucune valeur n'est fournie dans le fichier manifeste du projet d'importation, la valeur d'origine du projet importé est utilisée.
  • override_required: le projet d'importation doit remplacer la valeur constante initialement spécifiée dans le fichier manifeste du projet importé. Si aucune nouvelle valeur constante n'est fournie dans le projet d'importation, Looker affiche une erreur.

Lorsque vous importez des fichiers qui font référence à une constante dans votre projet, vous pouvez utiliser le sous-paramètre override_constant de local_dependency ou remote_dependency dans le fichier manifeste de votre projet pour fournir une nouvelle valeur pour cette constante, à condition que export soit défini sur override_optional ou override_required dans son projet d'origine. Lorsque vous remplacez la valeur d'une constante provenant d'un projet importé, votre projet utilise la valeur spécifiée avec le paramètre override_constant.

Par exemple, supposons que vous gériez plusieurs bases de données sur une seule instance Looker, avec un projet distinct pour chaque base de données. Supposons également que les schémas de données sont identiques pour chaque base de données et que votre objectif est de définir une analyse une seule fois et de l'appliquer à chaque jeu de données.

Dans cet exemple, supposons que proj_core soit le projet de base dans lequel vous avez défini les vues que vous souhaitez importer dans d'autres projets. De plus, l'une des vues que vous souhaitez importer est la vue orders, définie comme suit:


view: orders {
  sql_table_name: "@{schema_name}.orders"
}

Le schéma sur lequel est basée la vue orders est spécifié dans le paramètre sql_table_name à l'aide de la constante schema_name, qui est définie dans le fichier manifeste proj_core. Dans l'exemple suivant, étant donné que la constante schema_name est définie sur export: override_required, tout projet qui importe schema_name doit remplacer sa valeur à l'aide du paramètre override_constant:


constant: schema_name {
  value: "proj_core_schema"
  export: override_required
}

Par exemple, supposons que vous souhaitiez importer la vue orders dans un projet local appelé proj_a. Il existe également une table appelée orders dans la base de données pour proj_a, dont la structure est identique à celle de la table orders du projet de base, proj_core.

Comme proj_core et proj_a se trouvent sur la même instance, vous pouvez importer la vue orders dans proj_a à l'aide de local_dependency. À l'aide du sous-paramètre override_constant de local_dependency, vous pouvez ensuite mettre à jour la constante schema_name pour qu'elle pointe vers le schéma proj_a_schema dans le fichier manifeste de proj_a:


project_name: "proj_a"

local_dependency: {
  project: "proj_core"
  override_constant: schema_name {
    value: "proj_a_schema"
  }
}

Dans cet exemple, étant donné que la constante schema_name est définie sur export: override_required dans project_core, Looker affichera une erreur si vous ne remplacez pas sa valeur dans proj_a (le projet d'importation).

Remplacer la constante schema_name dans proj_a vous permet d'utiliser les champs que vous avez définis dans la vue orders dans proj_core, au lieu de créer un fichier de vue et de définir vos champs à partir de zéro. Dans cet exemple, la vue orders correspond à une table différente pour chaque projet:

  • Dans proj_core, la vue orders est basée sur la table proj_core_schema.orders de votre base de données.
  • Dans proj_a, la vue orders est basée sur la table proj_a_schema.orders de votre base de données.