Utilisation
derived_table: {
create_process: {
sql_step:
CREATE TABLE ${SQL_TABLE_NAME}
(customer_id int(11),
lifetime_orders int(11)) ;;
sql_step:
INSERT INTO ${SQL_TABLE_NAME}
(customer_id,
lifetime_orders)
SELECT customer_id, COUNT(*)
AS lifetime_orders
FROM order
GROUP BY customer_id ;;
}
}
|
Hiérarchie
create_process |
Valeur par défaut
Aucun
Acceptation
Un ou plusieurs sous-paramètres sql_step
|
Définition
Si votre dialecte de base de données utilise des commandes LDD (Data Definition Language) personnalisées, vous pouvez utiliser create_process pour créer des tables dérivées persistantes (PDT). create_process définit une liste d'instructions SQL qui seront exécutées dans l'ordre indiqué. Chacune de ces instructions est indiquée à l'aide du sous-paramètre sql_step. Chaque sous-paramètre sql_step peut inclure n'importe quelle requête SQL légale. Vous pouvez définir plusieurs sous-paramètres sql_step. Ils seront exécutés un par un, dans l'ordre dans lequel ils sont spécifiés. Looker émet les instructions dans les sous-paramètres sql_step telles quelles, sans la correction d'erreur habituelle de Looker.
Par exemple, certains dialectes de base de données ne sont pas compatibles avec CREATE TABLE as SELECT émis en tant qu'instruction SQL unique. Ils nécessitent des instructions SQL distinctes. Par conséquent, il n'est pas possible de créer des tables dérivées persistantes basées sur SQL traditionnelles sur ces dialectes. Le paramètre create_process permet de créer des tables dérivées persistantes en créant une liste d'instructions SQL distinctes qui sont émises dans l'ordre.
Vous pouvez également utiliser create_process pour prendre en charge des dialectes tels que les modèles de machine learning BigQuery ML prédictifs de Google.
Le paramètre create_process indique que vous écrivez les instructions CREATE complètes pour la table dérivée, y compris les index. Pour ajouter un index à une table dérivée avec create_process, utilisez un paramètre sql_step pour spécifier le code SQL de l'index.
Pour les PDT définies à l'aide de
create_process, vous ne pouvez pas utiliser les paramètres suivants :indexescluster_keysdistributiondistribution_stylepartition_keyssortkeys
Exemple
Créez une table dérivée persistante ctasless_customer_order_facts sur une base de données MySQL en deux étapes. Commencez par exécuter l'instruction SQL CREATE TABLE, définie par le premier sous-paramètre sql_step. Ensuite, exécutez l'instruction SQL INSERT INTO avec une instruction SELECT, définie par le deuxième sous-paramètre sql_step :
view: ctasless_customer_order_facts {
derived_table: {
datagroup_trigger: some_datagroup
create_process: {
sql_step: CREATE TABLE ${SQL_TABLE_NAME} (
customer_id int(11),
lifetime_orders int(11)
) ;;
sql_step: INSERT INTO ${SQL_TABLE_NAME}(customer_id, lifetime_orders)
SELECT customer_id, COUNT(*) AS lifetime_orders
FROM order
GROUP BY customer_id ;;
}
}
}
Éléments à prendre en compte
Opérateur de substitution ${SQL_TABLE_NAME}
Vous pouvez utiliser l'opérateur de substitution ${SQL_TABLE_NAME} pour remplacer le nom calculé de la PDT en cours de création. Cela garantit que l'instruction SQL inclura correctement le nom de la PDT indiqué dans le paramètre LookML view.
create_processdoit créer une table portant le nom indiqué par l'opérateur de substitution${SQL_TABLE_NAME}, sinon elle sera entièrement recréée à chaque intervalle de vérification du déclencheur spécifié dans le paramètre Programme de maintenance des groupes de données et des PDT d'une connexion (la valeur par défaut est de cinq minutes). Cela peut entraîner un trafic de requêtes inattendu sur votre base de données ou votre entrepôt de données.
Utiliser sql_create pour créer une PDT en une seule étape
Si votre dialecte de base de données nécessite des commandes LDD personnalisées et que vous souhaitez créer une PDT en une seule étape, vous pouvez utiliser sql_create pour définir une instruction SQL CREATE complète à exécuter et créer une PDT en une seule étape.
Les tables définies avec create_process ne peuvent pas être utilisées pour les PDT incrémentielles.
Pour être utilisée comme table PDT incrémentielle, une table PDT basée sur SQL doit avoir une requête définie à l'aide du paramètre sql. Les PDT basées sur SQL définies avec le paramètre sql_create ou le paramètre create_process ne peuvent pas être créées de manière incrémentielle.
En effet, Looker utilise une commande INSERT ou MERGE pour créer les incréments d'une augmentation de tables PDT. La table dérivée ne peut pas être définie au moyen d'instructions personnalisées LDD (Data Definition Language) car Looker ne pourrait déterminer quelles instructions LDD sont nécessaires pour créer un incrément précis.