publish_as_db_view

Utilisation

view: my_view {
  derived_table: {
    publish_as_db_view: yes
    ...
  }
}
Hiérarchie
publish_as_db_view

- ou -

publish_as_db_view
Valeur par défaut
no

Acceptation
Booléen (yes ou no)

Règles spéciales
  • La vue de base de données stable est publiée (créée) lors du prochain cycle du régénérateur Looker après le déploiement en production du code LookML de la table persistante avec publish_as_db_view: yes.
  • Les vues de base de données stables ne sont compatibles qu'avec les tables persistantes qui utilisent des groupes de données ou des sql_trigger_value stratégies de persistance. Les tables persistantes qui utilisent persist_for ne sont pas acceptées.
  • Les vues de base de données stables ne sont compatibles qu'avec les connexions à la base de données disposant des autorisations CREATE VIEW pour le schéma temporaire.

Définition

Le paramètre publish_as_db_view vous permet de signaler les tables persistantes (qui incluent les tables dérivées persistantes et les tables agrégées) pour les interroger en dehors de Looker. Pour les tables persistantes dont le paramètre publish_as_db_view est défini sur yes, Looker crée une vue de base de données stable sur la base de données pour la table persistante. La vue de base de données stable est créée dans la base de données elle-même afin de pouvoir être interrogée en dehors de Looker. Le concept de vue de base de données stable est différent de celui de vue LookML, car les vues LookML existent dans votre instance Looker et non dans votre base de données elle-même.

La vue de base de données stable sera publiée (créée) lors du prochain cycle du régénérateur Looker une fois que le code LookML de la table persistante aura été déployé en production avec publish_as_db_view: yes.

Exemples

Créer une vue de base de données stable pour une PDT

Créez la PDT e_flights_pdt pour laquelle une vue de base de données stable est créée dans la base de données :


view: e_flights_pdt {
  derived_table: {
    publish_as_db_view: yes
    datagroup_trigger: e_flights_default_datagroup
    explore_source: ontime {
      timezone: "America/Los_Angeles"
      column: flight_num {}
      column: carrier {}
      column: arr_date {}
    }
  }
  dimension: flight_num {}
  dimension: carrier {}
  dimension: arr_date {
    type: date
  }
}

La vue de base de données stable pour e_flights_pdt sera publiée lors du prochain cycle du régénérateur Looker après le déploiement du code LookML de la table PDT en production. Une fois que Looker a créé la PDT, vous pouvez interroger la vue stable de la base de données.

Créer une vue de base de données stable pour une table agrégée

Créez la table agrégée weekly_orders pour laquelle une vue de base de données stable est créée dans la base de données :

explore: orders {
  aggregate_table: weekly_orders {
    materialization: {
      sql_trigger_value: SELECT CURDATE() ;;
      publish_as_db_view:  yes
    }
    query: {
      dimensions: [orders.status, orders.created_week]
      measures: [orders.count]
    }
  }
}

La vue de base de données stable pour la table agrégée weekly_orders sera publiée lors du prochain cycle du régénérateur Looker après le déploiement du code LookML de la table agrégée en production. Une fois que Looker a créé la table agrégée, vous pouvez interroger la vue stable de la base de données.

Accéder à la vue stable de la base de données

Lorsque la vue de base de données stable est publiée pour une table persistante, vous pouvez l'interroger directement une fois que vous avez obtenu le nom stable. Il existe deux façons d'obtenir le nom de vue stable pour une table persistante :

Fenêtre modale des détails de la PDT

Si vous êtes administrateur ou utilisateur disposant de l'autorisation see_pdts, vous pouvez utiliser la page Tables dérivées persistantes de la section Admin de Looker pour obtenir le nom de la vue de base de données stable d'une table persistante :

  1. Cliquez sur l'icône Menu principal Looker , puis sélectionnez Admin si le menu Admin n'est pas déjà affiché. (Si vous vous trouvez dans la section Explorer ou Développer du menu principal de Looker, vous devrez peut-être cliquer sur la flèche Retour pour afficher le menu Admin.)
  2. Dans le menu Admin, sélectionnez Tables dérivées persistantes.
  3. Sur la page Tables dérivées persistantes, recherchez le nom de votre table persistante.
  4. Cliquez sur le menu à trois points de votre table persistante, puis sélectionnez Détails du PDT.
  5. Dans la modalité Détails du PDT, recherchez le champ Nom stable.

Pour interroger directement la table de vue stable, ajoutez le nom du schéma temporaire avant le nom de la table. Par exemple, si le nom du schéma temporaire est tmp, vous pouvez interroger la vue de base de données stable avec une commande comme celle-ci :


SELECT * from tmp.CL_e_redlook_e_redlook_inc_pdt

Onglet "SQL" d'une exploration

Si vous n'avez pas accès à la page d'administration Persistent Derived Tables (Tables dérivées persistantes), vous pouvez utiliser les informations incluses dans l'onglet SQL d'une exploration pour déterminer le nom de vue stable d'une table persistante. Le nom de la vue stable utilise le format suivant :

[scratch schema name].[connection registration key]_[model_name]_[view_name]

Par exemple, si vous avez une table persistante dans le modèle nommé faa et une vue nommée e_flights_pdt, vous n'avez besoin que du nom du schéma temporaire et de la clé d'enregistrement de la connexion. Vous pouvez les trouver dans l'onglet SQL de la section Données d'une requête sur la table persistante. Dans l'instruction CREATE TABLE ou FROM de l'onglet SQL, vous trouverez les informations suivantes :

  • La clé d'enregistrement de la connexion comporte deux caractères. Selon le dialecte de votre base de données, elle sera précédée d'un signe dollar ou du premier trait de soulignement dans le nom de la table persistante.
  • Le nom du schéma temporaire correspond au début de la chaîne après CREATE TABLE ou FROM, avant ".".

Dans tous les exemples de requêtes suivants, la clé d'enregistrement de la connexion est LB et le nom du schéma temporaire est tmp.

Voici un exemple de requête SQL générée par Looker avec une instruction CREATE TABLE pour un dialecte qui utilise un signe dollar avant la clé d'enregistrement de la connexion. Le nom de la vue est e_flights_pdt et le nom de la table dérivée générée est tmp.LR$LBC5Q1576702903774_e_flights_pdt.

generate derived table e_flights_pdt
Building e_flight::e_flights_pdt in dev mode on instance b6ff28049851f1954156526c66ca9912
CREATE TABLE tmp.LR$LBC5Q1576702903774_e_flights_pdt (INDEX(flight_num)) SELECT
  ontime.flight_num AS `flight_num`
  ontime.carrier AS `carrier,
    (TIMESTAMP(DATE (CONVERT_TZ(ontime.arr_time, 'UTC', 'America/Los_Angeles')))) AS
      `arr_date``
FROM `flightstats`.`ontime` AS `ontime`
GROUP BY
  1,
  2,
  3
-- finished e_flights_pdt => tmp.LR$LBC5Q1576702903774_e_flights_pdt

SELECT
  e_flights_pdt.flight_num AS `e_flights_pdt.flight_num`,
  e_flights_pdt.carrier AS `e_flights_pdt.carrier`
FROM tmp.LR$LBC5Q1576702903774_e_flights_pdt AS e_flights_pdt
GROUP BY
  1,
  2
ORDER BY
  e_flights_pdt.flight_num
LIMIT 5

Voici un exemple de requête SQL générée par Looker avec une instruction FROM pour un dialecte qui utilise un trait de soulignement avant la clé d'enregistrement de la connexion. Le nom de la vue est e_flights_pdt et le nom de la table dérivée générée est tmp.LR_LBFIM1580333699953_e_flights_pdt.


--use existing e flights pdt in tmp.LR_LBFIM1580333699953_e_flights_pdt

SELECT
  e_flights_pdt.id AS `e_flights_pdt.id`,
  DATE(e_flights_pdt.faa_event_date) AS `e_flights_pdt. faa_event_date`
FROM tmp.LR_LBFIM1580333699953_e_flights_pdt AS e_flights_pdt

GROUP BY 1,2
ORDER BY DATE(e_flights_pdt.faa_event_date) DESC
LIMIT 5

Une fois encore, la vue de base de données stable présente le format suivant :

[scratch schema name].[connection registration key]_[model_name]_[view_name]

Voici toutes les valeurs :

  • [scratch schema name] correspond à tmp.
  • [connection registration key] correspond à LB.
  • [model_name] correspond à faa.
  • [view_name] correspond à e_flights_pdt.

Voici le nom stable de la vue de base de données de la table persistante :

tmp.LB_faa_e_flights_pdt

Une fois que vous avez le nom de la vue de base de données stable, vous pouvez l'interroger directement. Exemple :


SELECT * from tmp.LB_faa_e_flights_pdt

Éléments à prendre en compte

Certains dialectes nécessitent une syntaxe supplémentaire

Si la clé d'enregistrement de la connexion commence par un chiffre, certains dialectes exigent des guillemets doubles, des accents graves, des crochets ou une syntaxe similaire autour de la deuxième partie du nom de la vue de base de données stable. Par exemple, Amazon Redshift exige des guillemets doubles. Par conséquent, si votre clé d'enregistrement de connexion commence par un chiffre, le format sera le suivant :

[scratch schema name]."[connection registration key]_[model_name]_[view_name]"

Par exemple, si la clé d'enregistrement de la connexion est 84, vous devez mettre des guillemets autour de la deuxième partie du nom de table stable, après le point. Vos requêtes à la base de données ressembleraient à ceci :


SELECT * from tmp."84_faa_e_flights_pdt"

Consultez la documentation de votre dialecte pour en savoir plus sur la syntaxe spécifique requise.

La connexion à la base de données doit disposer des autorisations CREATE VIEW.

Pour créer une vue dans votre base de données, le compte que Looker utilise pour se connecter à votre base de données doit disposer des autorisations CREATE VIEW pour le schéma temporaire de la base de données.

Le nom d'utilisateur, le mot de passe et le schéma temporaire de la base de données sont configurés lorsque vous connectez Looker à votre base de données.

Vous pouvez tester votre connexion pour voir si les noms de vues stables sont compatibles avec votre connexion. Si votre dialecte est compatible avec les noms de vues stables et si les PDT sont activées sur la connexion, Looker testera la connexion pour voir si elle autorise les vues stables :

  • Si la connexion permet des vues stables, le test de connexion renvoie un résultat tel que Can use stable views in temp schema "docsexamples_scratch" in database "flightstats".
  • Si la connexion n'autorise pas les vues stables, le test de connexion renvoie un résultat tel que Cannot use stable views in temp schema "docsexamples" in database "flightstats", ainsi que d'autres détails tels que CREATE VIEW command denied to user 'docsexamples'.

Prise en charge des dialectes pour les vues de base de données stables

La possibilité de créer une vue de base de données stable pour une table persistante dépend du dialecte de base de données utilisé par votre connexion Looker. Dans la dernière version de Looker, les dialectes suivants sont compatibles avec la vue de base de données stable des tables persistantes :

Dialecte Compatibilité
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13+
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica