sql_table_name (pour les vues)

Cette page fait référence au paramètre sql_table_name qui fait partie d'une vue.

sql_table_name peut également être utilisé dans le cadre d'une jointure, décrite sur la page de documentation du paramètre sql_table_name (pour les jointures).

sql_table_name peut également être utilisé dans le cadre d'une exploration, décrite sur la page de documentation du paramètre sql_table_name (pour les explorations).

Utilisation

view_name {
sql_table_name: table_name ;;
}
Hiérarchie
sql_table_name
Valeur par défaut
Nom de la vue

Acceptation
Un nom de table dans votre base de données

Règles spéciales
  • La table doit être accessible depuis la connexion à la base de données
  • Si la table se trouve dans un autre schéma, vous devez spécifier le schéma
  • Si la table se trouve dans une autre base de données, vous devez spécifier la base de données et le schéma, et l'autre base de données doit se trouver sur la même machine et dans le même dialecte SQL.

Définition

Le paramètre sql_table_name spécifie la table de votre base de données qui sera interrogée par une vue.

Si vous souhaitez créer une vue basée sur une table dérivée, n'utilisez pas le paramètre sql_table_name. Utilisez plutôt le paramètre derived table, décrit sur la page de documentation de derived_table. L'IDE Looker renverra une erreur si vous avez à la fois sql_table_name et derived_table dans un fichier d'affichage.

Si une vue ne contient ni le paramètre sql_table_name, ni le paramètre derived_table, Looker suppose que la vue est basée sur une table de base de données et que le nom de la table de base de données correspond au nom de la vue. En d'autres termes:

view: my_name { ... }

est équivalent logiquement à ceci:

view: my_name {
  sql_table_name: my_name ;;
}

Il est assez fréquent de ne pas utiliser ce comportement par défaut et de ne pas utiliser sql_table_name. Cependant, il peut arriver que cela soit utile dans certaines situations majeures. Tout d'abord, vous aurez parfois besoin que la vue porte un nom différent de celui de la table sous-jacente, par exemple pour nettoyer un tableau désordonné:

view: orders {
  sql_table_name: prod_orders_2 ;;
}

De plus, il existe des cas où une vue doit être basée sur une base de données ou un schéma qui ne se trouve pas dans le chemin de recherche par défaut de l'utilisateur de la base de données. Vous pouvez ensuite créer des références comme celles-ci:

view: desired_view_name {
  sql_table_name: database_name.schema_name.table_name ;;
}

Jointures fédérées

La jointure de deux tables à partir de différentes bases de données est appelée jointure fédérée. Les jointures fédérées peuvent être effectuées à l'aide de Looker si les deux bases de données utilisent le même dialecte SQL, résident sur la même machine physique et sont accessibles via la même connexion dans Looker.

Dans ces conditions, vous pouvez créer une jointure fédérée en spécifiant le nom de base de données de chaque table dans le paramètre sql_table_name pour cette vue:

view: view_1 {
  sql_table_name: database_name.table_1 ;;
}

view: view_2 {
  sql_table_name: another_database_name.table_2 ;;
}

Ensuite, associez ces vues à l'aide du paramètre sql_on:

explore: view_1 {
  join: view_2 {
    sql_on: ${view_1.view_1_ID} = ${view_2.view_2_ID} ;;
  }
}

Si vous souhaitez joindre des bases de données dans différents dialectes SQL, nous vous recommandons de répliquer une base de données dans l'autre afin de pouvoir extraire toutes les données d'une source unique.

Si vous souhaitez effectuer une jointure entre deux bases de données MySQL sur des machines distinctes, vous pouvez effectuer une jointure fédérée sur les deux connexions de base de données en créant une table FEDERATED à l'aide de CONNECTION. En bref, vous établissez une connexion aux tables sur un autre serveur entièrement dans votre base de données MySQL. Consultez cette documentation MySQL pour en savoir plus.

Examples

Faites en sorte que la vue customers s'appuie sur la table customer_1 du schéma par défaut:

view: customers {
  sql_table_name: customer_1 ;;
}

Faites en sorte que la vue customers s'appuie sur la table customer_1 du schéma analytics:

view: customers {
  sql_table_name: analytics.customer_1 ;;
}

Difficultés courantes

Les tables référencées par view doivent être accessibles à partir de la connexion actuelle

Les éléments views sont référencés par un paramètre explore ou join, qui est lui-même référencé par un modèle. Le modèle détermine quelle connexion à la base de données est utilisée (voir connection pour le modèle). Les connexions à la base de données sont définies dans la section Administration de Looker. Lorsque vous faites référence à une table dans le paramètre sql_table_name, elle doit être accessible dans la connexion associée.

Les noms de tables non compatibles peuvent nécessiter une mise en forme supplémentaire

Dans certains dialectes, les noms de tables comportant des caractères non compatibles (également appelés noms de tables "non conviviaux") doivent être placés entre crochets, de guillemets doubles ou de guillemets simples. Par exemple, le nom de la table Customers.PaymentInfo inclut un point, qui peut être interprété comme une table appelée PaymentInfo dans le schéma Customers. Pour résoudre ce problème, si votre dialecte nécessite des crochets, vous pouvez placer le nom du tableau entre crochets, comme suit:

sql_table_name: [Customers.PaymentInfo] ;;

Si votre dialecte nécessite des guillemets doubles ou des guillemets simples, vous devez remplacer les crochets de ces caractères.