Migrer vers le nouvel environnement d'exécution LookML

Le nouveau runtime LookML est disponible depuis Looker 22.6. L'environnement d'exécution est la partie de Looker qui interprète le code LookML. Le nouveau runtime est plus rapide et détecte plus d'erreurs LookML que l'ancien.

Looker encourage vivement tous ses clients à migrer vers le nouveau runtime. La nouvelle version du runtime LookML est capable de détecter des erreurs précédemment ignorées. Par conséquent, son activation peut entraîner l'apparition de nouvelles erreurs LookML. Ces erreurs ne sont pas causées par le nouveau runtime. Il s'agit plutôt d'erreurs préexistantes qui sont maintenant détectées.

De plus, les clients qui souhaitent remplacer leur instance par Looker (Google Cloud Core) doivent migrer vers le nouvel environnement d'exécution au préalable.

Passer au nouvel environnement d'exécution

1. Désactivez l'ancienne fonctionnalité "Utiliser l'ancienne version de l'environnement d'exécution LookML", le cas échéant.

Certaines fonctionnalités Looker sont activées avec l'ancienne fonctionnalité Utiliser l'ancienne version de l'exécution LookML. Désactivez la fonctionnalité héritée Utiliser l'ancienne version de l'environnement d'exécution LookML pour passer l'instance Looker à la nouvelle version de l'environnement d'exécution.

Si l'ancienne fonctionnalité Utiliser l'ancien environnement d'exécution LookML n'est pas disponible sur la page d'administration Anciennes fonctionnalités de votre instance Looker, votre instance utilise déjà le nouvel environnement d'exécution.

2. Assurez-vous que vos projets LookML ne sont pas configurés avec new_lookml_runtime:no

Vous pouvez remplacer le paramètre global Use Legacy LookML Runtime (Utiliser l'ancienne version de l'environnement d'exécution LookML) d'une instance Looker en ajoutant l'instruction new_lookml_runtime:no dans le fichier manifeste d'un projet LookML.

Assurez-vous que les fichiers manifestes de vos projets LookML ne contiennent pas le paramètre new_lookml_runtime ou que new_lookml_runtime est défini sur yes dans tous les projets LookML.

Problèmes LookML que le nouvel environnement d'exécution peut détecter

Après la transition vers le nouveau runtime, vous remarquerez peut-être de nouvelles erreurs dans votre LookML. Les nouvelles erreurs ne sont pas causées par le nouveau runtime. Il s'agit plutôt de problèmes préexistants qui sont maintenant détectés.

Selon vos paramètres de développeur LookML, vous devrez peut-être corriger ces erreurs avant de continuer à envoyer des modifications LookML. Les sections suivantes décrivent certains des problèmes que le nouveau runtime LookML peut détecter dans votre projet et comment les résoudre:

Certaines tables dérivées persistantes peuvent être regénérées

Les clés de table dérivée persistante (PDT) sont basées sur le code SQL généré par l'environnement d'exécution LookML. Dans certains cas, le nouveau runtime peut générer du code SQL différent (mais équivalent) pour une table PDT, ce qui entraîne une clé PDT différente. Si vous modifiez une clé de table PDT, la table sera regénérée.

Les littéraux HTML dans les expressions Liquid peuvent être convertis en Unicode

Les balises HTML dans les expressions Liquid peuvent être converties en leur équivalent Unicode par le nouveau runtime. Par exemple, une balise <strong> peut être convertie en &lt;strong&gt;. Dans l'ancien environnement d'exécution, les balises HTML pouvaient être comparées directement, comme dans cet exemple:

html:
  {{ value |replace(""), "[" |replace(""), "]" }} ;;

Dans le nouvel environnement d'exécution, les comparaisons doivent être effectuées avec l'unicode:

html:
  {{ value |replace("&lt;strong&gt;"), "[" |replace("&lt;/strong&gt;"), "]" }} ;;

Références non valides dans sql_distinct_key : "vue inconnue"

Avec le nouveau runtime, un sql_distinct_key qui fait référence à un champ ou à une vue inconnus génère une exception. Exemple :

measure: total_shipping {
  type: sum_distinct
  sql: ${order_shipping} ;;
  sql_distinct_key: ${some_incorrect_field_name} ;;
}

La mesure de type "Distinct" sans clé primaire produit une requête SQL différente

Une mesure de type distincte (average_distinct, count_distinct, median_distinct, percentile_distinct, sum_distinct) sans paramètre primary-key ou sql_distinct_key peut produire du code SQL différent dans le nouveau runtime.

Veillez à spécifier un primary-key ou un sql_distinct_key lorsque vous créez des mesures de type distinctes.

Accéder à _filters[] dans Liquid avec une référence de champ brute ajoute le champ référencé en tant que colonne sélectionnée.

Dans Looker, une "référence de champ nue" est une référence qui n'est pas placée entre crochets, par exemple users.created_date au lieu de ${users.created_date}.

L'ancien environnement d'exécution ignorait les références de champ nues lorsqu'elles étaient utilisées avec la variable Liquid _filters. Le nouveau runtime ajoutera le champ à la requête SQL.

Par exemple, dans cette dimension, users.created_date est une référence simple:

dimension: name {
  html:
    {% if _filters[users.created_date] != NULL %}
      {{rendered_value}} (created: {{_filters[users.created_date]}})
    {% else %}
      {{rendered_value}}
    {% endif %}
    ;;
}

Dans l'ancien environnement d'exécution, _filters[users.created_date] aurait toujours été ignoré et seule la deuxième condition aurait été appliquée si {% if %} avait été remplie. Dans le nouvel environnement d'exécution, users.created_date sera ajouté à la clause SELECT de la requête SQL afin que la condition puisse être évaluée.

L'ajout automatique de champs inattendus aux requêtes Looker peut prêter à confusion pour les utilisateurs. Il est donc recommandé de ne pas utiliser de références de champ brutes, mais plutôt la syntaxe ${field_name}.