Aller au contenu principal

Schéma du log d'événements du pipeline

Le journal des événements du pipeline contient toutes les informations relatives à un pipeline, y compris les logs d’audit, les contrôles de qualité des données, la progression du pipeline et le data lineage.

Les tables suivantes décrivent le schéma du Log des événements. Certains de ces champs contiennent des données JSON qui nécessitent une analyse pour effectuer des queries, telles que le champ details. Databricks prend en charge l'opérateur : pour analyser les champs JSON. Consultez l'opérateur: (signe deux-points).

remarque

Certains champs du journal d'événements sont destinés à un usage interne par Databricks. La documentation suivante décrit les champs qui sont destinés à la consommation des clients.

Pour plus de détails sur l’utilisation du journal d’événements du pipeline, consultez la section Journal d’événements du pipeline.

Objet PipelineEvent

Représente un événement pipeline unique dans le log d’événements.

Champ

Description

id

Un identifiant unique pour l'enregistrement des logs d'événements.

sequence

Une chaîne JSON contenant des métadonnées pour identifier et ordonner les événements.

origin

Une chaîne JSON contenant des métadonnées sur l'origine de l'événement, par exemple, le fournisseur cloud, la région du fournisseur cloud, l'utilisateur et les informations de pipeline. Consultez l'objet d'origine.

timestamp

L'heure à laquelle l'événement a été enregistré, en UTC.

message

Un message lisible par l'homme décrivant l'événement.

level

Le niveau d'avertissement. Les valeurs possibles sont :

  • INFO: Événements informatifs
  • WARN: Problèmes inattendus, mais non critiques
  • ERROR: Échec d'événement qui pourrait nécessiter l'attention de l'utilisateur
  • METRICS: Utilisé pour les événements à volume élevé stockés uniquement dans la table Delta et non affichés dans l'interface utilisateur des pipelines.

maturity_level

La stabilité du schéma d'événement. Les valeurs possibles sont :

  • STABLE: le schéma est stable et ne change pas.
  • NULL: Le schéma est stable et ne change pas. La valeur peut être NULL si l'enregistrement a été créé avant l'ajout du champ maturity_level (version 2022.37).
  • EVOLVINGLe schéma n'est pas stable et peut changer.
  • DEPRECATED: le schéma est obsolète et l'environnement d'exécution Lakeflow Pipelines pourrait cesser de produire cet événement à tout moment.

Il n'est pas recommandé de créer du monitoring ou des alertes basés sur les champs EVOLVING ou DEPRECATED.

error

Si une erreur s’est produite, des détails décrivant l’erreur.

details

Une chaîne JSON contenant des détails structurés de l'événement. Il s'agit du champ principal utilisé pour analyser les événements. Le format de chaîne JSON dépend de event_type. Consultez L'objet détails pour plus d'informations.

event_type

Le type d'événement. Pour une liste des types d'événements et le type d'objet de détails qu'ils créent, consultez l'objet de détails.

Champ

Description

id

Un identifiant unique pour l'enregistrement des logs d'événements.

sequence

Une chaîne JSON contenant des métadonnées pour identifier et ordonner les événements.

origin

Une chaîne JSON contenant des métadonnées sur l'origine de l'événement, par exemple, le fournisseur cloud, la région du fournisseur cloud, l'utilisateur et les informations de pipeline. Consultez l'objet d'origine.

timestamp

L'heure à laquelle l'événement a été enregistré, en UTC.

message

Un message lisible par l'homme décrivant l'événement.

level

Le niveau d'avertissement. Les valeurs possibles sont :

  • INFO: Événements informatifs
  • WARN: Problèmes inattendus, mais non critiques
  • ERROR: Échec d'événement qui pourrait nécessiter l'attention de l'utilisateur
  • METRICS: Utilisé pour les événements à volume élevé stockés uniquement dans la table Delta et non affichés dans l'interface utilisateur des pipelines.

maturity_level

La stabilité du schéma d'événement. Les valeurs possibles sont :

  • STABLE: le schéma est stable et ne change pas.
  • NULL: Le schéma est stable et ne change pas. La valeur peut être NULL si l'enregistrement a été créé avant l'ajout du champ maturity_level (version 2022.37).
  • EVOLVINGLe schéma n'est pas stable et peut changer.
  • DEPRECATED: le schéma est obsolète et l'environnement d'exécution Lakeflow Pipelines pourrait cesser de produire cet événement à tout moment.

Il n'est pas recommandé de créer du monitoring ou des alertes basés sur les champs EVOLVING ou DEPRECATED.

error

Si une erreur s’est produite, des détails décrivant l’erreur.

details

Une chaîne JSON contenant des détails structurés de l'événement. Il s'agit du champ principal utilisé pour analyser les événements. Le format de chaîne JSON dépend de event_type. Consultez L'objet détails pour plus d'informations.

event_type

Le type d'événement. Pour une liste des types d'événements et le type d'objet de détails qu'ils créent, consultez l'objet de détails.

L'objet des détails

Chaque événement possède différentes propriétés details dans l'objet JSON, basées sur le event_type de l'événement. Ce tableau répertorie les event_type et les details associées. Les propriétés details sont décrites dans la section Types de détails.

Détails par type event_type

Description

create_update

Capture la configuration complète qui est utilisée pour start une mise à jour de pipeline. Inclut toute configuration définie par Databricks. Pour plus de détails, consultez Détails de create_update.

user_action

Fournit des détails sur toute action de l'utilisateur concernant le pipeline (y compris la création d'un pipeline, ainsi que le démarrage ou l'annulation d'une mise à jour). Pour plus de détails, consultez Détails de l’événement user_action.

runtime_details

Fournit des détails sur le runtime utilisé pour la mise à jour du pipeline. Pour plus de détails, consultez Détails de l'événement runtime_details.

flow_progress

Décrit le cycle de vie d'un flux du démarrage, de l'exécution à l'achèvement ou à l'échec. Pour plus de détails, consultez Détails de l'événement flow_progress.

update_progress

Décrit le cycle de vie d'une mise à jour de pipeline, du démarrage à l'exécution, jusqu'à l'achèvement ou l'échec. Pour plus de détails, consultez Details for update_progress event.

flow_definition

Définit le schéma et le plan de query pour toutes les Transformations se produisant dans un flux donné. Peut être considéré comme les arêtes du DAG de Dataflow. Il peut être utilisé pour calculer la traçabilité de chaque flux ainsi que pour voir le plan de query expliqué. Pour plus de détails, consultez Détails de l'événement flow_definition.

dataset_definition

Définit un dataset, qui est soit la source, soit la destination d'un flux donné. Pour plus de détails, consultez Détails de l'événement dataset_definition.

sink_definition

Définit un puits donné. Pour plus de détails, consultez Details for sink_definition event.

deprecation

Répertorie les fonctionnalités que ce pipeline utilise et qui seront bientôt obsolètes ou le sont déjà. Pour des exemples des valeurs, consultez Détails de l'énumération pour l'événement de dépréciation.

cluster_resources

Comprend des informations sur les ressources de cluster pour les pipelines qui s'exécutent sur un compute classique. Ces métriques ne sont renseignées que pour les pipelines de compute Classic. Pour plus de détails, consultez Détails de l’événement des ressources du cluster.

autoscale

Inclut des informations sur la mise à l'échelle automatique des pipelines s'exécutant sur des compute Classic. Ces métriques ne sont renseignées que pour les pipelines de compute Classic. Pour plus de détails, consultez Détails de l'événement de mise à l'échelle automatique.

planning_information

Représente l'information de planification relative au refresh incrémentiel ou complet des vues matérialisées. Peut être utilisé pour obtenir plus de détails sur les raisons pour lesquelles une vue matérialisée est entièrement recalculée. Pour plus de détails, consultez les détails de l'événement planning_information.

hook_progress

Un événement pour indiquer l'état actuel d'un hook utilisateur pendant l'exécution du pipeline. Utilisé pour le monitoring de l'état des hooks d'événements, par exemple, pour l'envoi à des produits d'observabilité externes. Pour plus de détails, consultez Détails de l'événement hook_progress.

operation_progress

Comprend des informations sur la progression d’une opération. Pour plus de détails, consultez Détails de l’événement operation_progress.

stream_progress

Inclut des informations sur la progression d'un pipeline. Pour plus de détails, consultez Détails de l'événement stream_progress.

behavior_change_in_spark_connect

Signale un modèle de code détecté par l'analyse de compatibilité de la version d'environnement qui se comporterait différemment ou échouerait sous une version d'environnement. Pour plus de détails, consultez Détails de l'événement behavior_change_in_spark_connect.

Détails par type event_type

Description

create_update

Capture la configuration complète qui est utilisée pour start une mise à jour de pipeline. Inclut toute configuration définie par Databricks. Pour plus de détails, consultez Détails de create_update.

user_action

Fournit des détails sur toute action de l'utilisateur concernant le pipeline (y compris la création d'un pipeline, ainsi que le démarrage ou l'annulation d'une mise à jour). Pour plus de détails, consultez Détails de l’événement user_action.

runtime_details

Fournit des détails sur le runtime utilisé pour la mise à jour du pipeline. Pour plus de détails, consultez Détails de l'événement runtime_details.

flow_progress

Décrit le cycle de vie d'un flux du démarrage, de l'exécution à l'achèvement ou à l'échec. Pour plus de détails, consultez Détails de l'événement flow_progress.

update_progress

Décrit le cycle de vie d'une mise à jour de pipeline, du démarrage à l'exécution, jusqu'à l'achèvement ou l'échec. Pour plus de détails, consultez Details for update_progress event.

flow_definition

Définit le schéma et le plan de query pour toutes les Transformations se produisant dans un flux donné. Peut être considéré comme les arêtes du DAG de Dataflow. Il peut être utilisé pour calculer la traçabilité de chaque flux ainsi que pour voir le plan de query expliqué. Pour plus de détails, consultez Détails de l'événement flow_definition.

dataset_definition

Définit un dataset, qui est soit la source, soit la destination d'un flux donné. Pour plus de détails, consultez Détails de l'événement dataset_definition.

sink_definition

Définit un puits donné. Pour plus de détails, consultez Details for sink_definition event.

deprecation

Répertorie les fonctionnalités que ce pipeline utilise et qui seront bientôt obsolètes ou le sont déjà. Pour des exemples des valeurs, consultez Détails de l'énumération pour l'événement de dépréciation.

cluster_resources

Comprend des informations sur les ressources de cluster pour les pipelines qui s'exécutent sur un compute classique. Ces métriques ne sont renseignées que pour les pipelines de compute Classic. Pour plus de détails, consultez Détails de l’événement des ressources du cluster.

autoscale

Inclut des informations sur la mise à l'échelle automatique des pipelines s'exécutant sur des compute Classic. Ces métriques ne sont renseignées que pour les pipelines de compute Classic. Pour plus de détails, consultez Détails de l'événement de mise à l'échelle automatique.

planning_information

Représente l'information de planification relative au refresh incrémentiel ou complet des vues matérialisées. Peut être utilisé pour obtenir plus de détails sur les raisons pour lesquelles une vue matérialisée est entièrement recalculée. Pour plus de détails, consultez les détails de l'événement planning_information.

hook_progress

Un événement pour indiquer l'état actuel d'un hook utilisateur pendant l'exécution du pipeline. Utilisé pour le monitoring de l'état des hooks d'événements, par exemple, pour l'envoi à des produits d'observabilité externes. Pour plus de détails, consultez Détails de l'événement hook_progress.

operation_progress

Comprend des informations sur la progression d’une opération. Pour plus de détails, consultez Détails de l’événement operation_progress.

stream_progress

Inclut des informations sur la progression d'un pipeline. Pour plus de détails, consultez Détails de l'événement stream_progress.

behavior_change_in_spark_connect

Signale un modèle de code détecté par l'analyse de compatibilité de la version d'environnement qui se comporterait différemment ou échouerait sous une version d'environnement. Pour plus de détails, consultez Détails de l'événement behavior_change_in_spark_connect.

Types de détails

Les objets suivants représentent le details d'un type d'événement différent dans l'objet PipelineEvent.

Détails pour la création et la mise à jour

Les détails de l'événement create_update.

Champ

Description

run_as

L'identifiant utilisateur au nom duquel la mise à jour est exécutée. Généralement, il s'agit soit du propriétaire du pipeline, soit d'un Service Principal.

cause

La raison de la mise à jour. Généralement, soit JOB_TASK s'il est exécuté à partir d'un job, soit USER_ACTION s'il est exécuté interactivement par un utilisateur.

Champ

Description

run_as

L'identifiant utilisateur au nom duquel la mise à jour est exécutée. Généralement, il s'agit soit du propriétaire du pipeline, soit d'un Service Principal.

cause

La raison de la mise à jour. Généralement, soit JOB_TASK s'il est exécuté à partir d'un job, soit USER_ACTION s'il est exécuté interactivement par un utilisateur.

Détails de l'événement user_action

Les détails de l'événement user_action. Comprend les champs suivants :

Champ

Description

user_name

Le nom de l'utilisateur qui a déclenché une mise à jour de pipeline.

user_id

L'ID de l'utilisateur qui a déclenché une mise à jour du pipeline. Ce n'est pas toujours le même que l'utilisateur run_as, qui pourrait être un Service Principal ou un autre utilisateur.

action

L'action effectuée par l'utilisateur, y compris START et CREATE.

Champ

Description

user_name

Le nom de l'utilisateur qui a déclenché une mise à jour de pipeline.

user_id

L'ID de l'utilisateur qui a déclenché une mise à jour du pipeline. Ce n'est pas toujours le même que l'utilisateur run_as, qui pourrait être un Service Principal ou un autre utilisateur.

action

L'action effectuée par l'utilisateur, y compris START et CREATE.

Détails de l'événement runtime_details

Les détails de l'événement runtime_details.

Champ

Description

dbr_version

La version de Databricks Runtime.

image_key

La version de Databricks Runtime utilisée pour la mise à jour.

Champ

Description

dbr_version

La version de Databricks Runtime.

image_key

La version de Databricks Runtime utilisée pour la mise à jour.

Détails de l'événement flow_progress

Les détails pour un événement flow_progress.

Champ

Description

status

Le nouvel état du flux. Peut être l’une des options suivantes :

  • QUEUED
  • STARTING
  • RUNNING
  • COMPLETED
  • FAILED
  • SKIPPED
  • STOPPED
  • IDLE
  • EXCLUDED

metrics

Métriques concernant le flux. Pour plus de détails, consultez FlowMetrics.

data_quality

Métriques de qualité des données concernant le flux et les attentes associées. Pour plus de détails, consultez DataQualityMetrics.

Champ

Description

status

Le nouvel état du flux. Peut être l’une des options suivantes :

  • QUEUED
  • STARTING
  • RUNNING
  • COMPLETED
  • FAILED
  • SKIPPED
  • STOPPED
  • IDLE
  • EXCLUDED

metrics

Métriques concernant le flux. Pour plus de détails, consultez FlowMetrics.

data_quality

Métriques de qualité des données concernant le flux et les attentes associées. Pour plus de détails, consultez DataQualityMetrics.

Détails de l'événement update_progress

Les détails d'un événement update_progress.

Champ

Description

state

Le nouvel état de la mise à jour. Peut être l’une des options suivantes :

  • QUEUED
  • CREATED
  • WAITING_FOR_RESOURCES
  • INITIALIZING
  • RESETTING
  • SETTING_UP_TABLES
  • RUNNING
  • STOPPING
  • COMPLETED
  • FAILED
  • CANCELED

Utile pour calculer la durée des différentes étapes d'une mise à jour de pipeline, de la durée totale au temps passé à attendre les ressources, par exemple.

cancellation_cause

La raison pour laquelle une mise à jour est entrée dans l'état CANCELED. Inclut des raisons telles que USER_ACTION ou WORKFLOW_CANCELLATION (le flux de travail qui a déclenché la mise à jour a été annulé).

Champ

Description

state

Le nouvel état de la mise à jour. Peut être l’une des options suivantes :

  • QUEUED
  • CREATED
  • WAITING_FOR_RESOURCES
  • INITIALIZING
  • RESETTING
  • SETTING_UP_TABLES
  • RUNNING
  • STOPPING
  • COMPLETED
  • FAILED
  • CANCELED

Utile pour calculer la durée des différentes étapes d'une mise à jour de pipeline, de la durée totale au temps passé à attendre les ressources, par exemple.

cancellation_cause

La raison pour laquelle une mise à jour est entrée dans l'état CANCELED. Inclut des raisons telles que USER_ACTION ou WORKFLOW_CANCELLATION (le flux de travail qui a déclenché la mise à jour a été annulé).

Détails pour l'événement flow_definition

Les détails pour un événement flow_definition.

Champ

Description

input_datasets

Les entrées lues par ce flux.

output_dataset

Le dataset de sortie auquel ce flux écrit.

output_sink

Le puits de sortie vers lequel ce flux écrit.

explain_text

Le plan de query expliqué.

schema_json

Chaîne de schéma JSON Spark SQL.

schema

Schéma de ce flux.

flow_type

Le type de flux. Peut être l’une des options suivantes :

  • COMPLETE: Une table de streaming écrit à sa destination en mode complet (streaming).
  • CHANGE: Table de streaming utilisant APPLY_CHANGES_INTO.
  • SNAPSHOT_CHANGE: Table de streaming utilisant APPLY CHANGES INTO ... FROM SNAPSHOT ....
  • APPEND: la table de streaming écrit ses données dans sa destination en mode d'ajout (streaming).
  • MATERIALIZED_VIEW: Sorties vers une vue matérialisée.
  • VIEW: Sorties vers une vue.

comment

Commentaire ou description de l'utilisateur au sujet du dataset.

spark_conf

Configurations Spark définies sur ce flux.

language

La langue utilisée pour créer ce flux. Peut être SCALA, PYTHON ou SQL.

once

Si ce flux a été déclaré pour s’exécuter une seule fois.

Champ

Description

input_datasets

Les entrées lues par ce flux.

output_dataset

Le dataset de sortie auquel ce flux écrit.

output_sink

Le puits de sortie vers lequel ce flux écrit.

explain_text

Le plan de query expliqué.

schema_json

Chaîne de schéma JSON Spark SQL.

schema

Schéma de ce flux.

flow_type

Le type de flux. Peut être l’une des options suivantes :

  • COMPLETE: Une table de streaming écrit à sa destination en mode complet (streaming).
  • CHANGE: Table de streaming utilisant APPLY_CHANGES_INTO.
  • SNAPSHOT_CHANGE: Table de streaming utilisant APPLY CHANGES INTO ... FROM SNAPSHOT ....
  • APPEND: la table de streaming écrit ses données dans sa destination en mode d'ajout (streaming).
  • MATERIALIZED_VIEW: Sorties vers une vue matérialisée.
  • VIEW: Sorties vers une vue.

comment

Commentaire ou description de l'utilisateur au sujet du dataset.

spark_conf

Configurations Spark définies sur ce flux.

language

La langue utilisée pour créer ce flux. Peut être SCALA, PYTHON ou SQL.

once

Si ce flux a été déclaré pour s’exécuter une seule fois.

Détails de l'événement dataset_definition.

Les détails d'un événement dataset_definition. Comprend les champs suivants :

Champ

Description

dataset_type

Distingue les vues matérialisées et les tables de streaming.

num_flows

Le nombre de flux qui écrivent dans le dataset.

expectations

Les attentes associées au dataset.

Champ

Description

dataset_type

Distingue les vues matérialisées et les tables de streaming.

num_flows

Le nombre de flux qui écrivent dans le dataset.

expectations

Les attentes associées au dataset.

Détails de l'événement de définition du récepteur

Les détails pour un événement sink_definition.

Champ

Description

format

Le format du puits.

options

Les options clé-valeur associées à la destination.

Champ

Description

format

Le format du puits.

options

Les options clé-valeur associées à la destination.

Détails de l'énumération pour l'événement d'obsolescence

L'événement deprecation comporte un champ message. Les valeurs possibles pour le message comprennent les éléments suivants. Ceci est une liste partielle qui s'allonge avec le temps.

Champ

Description

TABLE_MANAGED_BY_MULTIPLE_PIPELINES

Une table est gérée par plusieurs pipelines.

INVALID_CLUSTER_LABELS

Utilisation d'étiquettes de cluster non prises en charge.

PINNED_DBR_VERSION

Utilisation de dbr_version au lieu de channel dans les paramètres du pipeline.

PREVIOUS_CHANNEL_USED

En utilisant le Canal de distribution PREVIOUS, qui pourrait disparaître dans une prochaine version.

LONG_DATASET_NAME

Utilisation d'un nom de jeu de données dont la longueur est supérieure à la longueur prise en charge.

LONG_SINK_NAME

Utilisation d'un nom de puits plus long que la longueur prise en charge.

LONG_FLOW_NAME

Utilisation d'un nom de flux plus long que la longueur prise en charge.

ENHANCED_AUTOSCALING_POLICY_COMPLIANCE

La politique de cluster ne se conforme que lorsque l'autoscaling amélioré utilise une taille de cluster fixe.

DATA_SAMPLE_CONFIGURATION_KEY

L'utilisation de la clé de configuration pour configurer l'échantillonnage des données est obsolète.

INCOMPATIBLE_CLUSTER_SETTINGS

Les paramètres de cluster actuels ou la politique de cluster ne sont plus compatibles avec Lakeflow pipelines.

STREAMING_READER_OPTIONS_DROPPED

Utilisation des options de lecteur de streaming qui sont abandonnées.

DISALLOWED_SERVERLESS_STATIC_SPARK_CONFIG

La configuration de Spark statique via la configuration de pipeline n'est pas autorisée pour les pipelines serverless.

INVALID_SERVERLESS_PIPELINE_CONFIG

Le client Serverless fournit une configuration de pipeline invalide.

UNUSED_EXPLICIT_PATH_ON_UC_MANAGED_TABLE

Spécifier les chemins de table explicites inutilisés sur les tables gérées par UC.

FOREACH_BATCH_FUNCTION_NOT_SERIALIZABLE

La fonction foreachBatch fournie n'est pas sérialisable.

DROP_PARTITION_COLS_NO_PARTITIONING

La suppression de l'attribut partition_cols n'entraîne aucun partitionnement.

PYTHON_CREATE_TABLE

Utilisation de @dlt.create_table au lieu de @dp.table ou @dp.materialized_view.

PYTHON_CREATE_VIEW

Utilisation de @dlt.create_view plutôt que @dp.temporary_view.

PYTHON_CREATE_STREAMING_LIVE_TABLE

Utilisation de create_streaming_live_table au lieu de create_streaming_table.

PYTHON_CREATE_TARGET_TABLE

Utilisation de create_target_table au lieu de create_streaming_table.

FOREIGN_KEY_TABLE_CONSTRAINT_CYCLE

L'ensemble de tables gérées par le pipeline présente un cycle dans l'ensemble des contraintes de clé étrangère.

PARTIALLY_QUALIFIED_TABLE_REFERENCE_INCOMPATIBLE_WITH_DEFAULT_PUBLISHING_MODE

Une référence de table partiellement qualifiée qui a des significations différentes en mode de publication default et en mode de publication hérité.

Champ

Description

TABLE_MANAGED_BY_MULTIPLE_PIPELINES

Une table est gérée par plusieurs pipelines.

INVALID_CLUSTER_LABELS

Utilisation d'étiquettes de cluster non prises en charge.

PINNED_DBR_VERSION

Utilisation de dbr_version au lieu de channel dans les paramètres du pipeline.

PREVIOUS_CHANNEL_USED

En utilisant le Canal de distribution PREVIOUS, qui pourrait disparaître dans une prochaine version.

LONG_DATASET_NAME

Utilisation d'un nom de jeu de données dont la longueur est supérieure à la longueur prise en charge.

LONG_SINK_NAME

Utilisation d'un nom de puits plus long que la longueur prise en charge.

LONG_FLOW_NAME

Utilisation d'un nom de flux plus long que la longueur prise en charge.

ENHANCED_AUTOSCALING_POLICY_COMPLIANCE

La politique de cluster ne se conforme que lorsque l'autoscaling amélioré utilise une taille de cluster fixe.

DATA_SAMPLE_CONFIGURATION_KEY

L'utilisation de la clé de configuration pour configurer l'échantillonnage des données est obsolète.

INCOMPATIBLE_CLUSTER_SETTINGS

Les paramètres de cluster actuels ou la politique de cluster ne sont plus compatibles avec Lakeflow pipelines.

STREAMING_READER_OPTIONS_DROPPED

Utilisation des options de lecteur de streaming qui sont abandonnées.

DISALLOWED_SERVERLESS_STATIC_SPARK_CONFIG

La configuration de Spark statique via la configuration de pipeline n'est pas autorisée pour les pipelines serverless.

INVALID_SERVERLESS_PIPELINE_CONFIG

Le client Serverless fournit une configuration de pipeline invalide.

UNUSED_EXPLICIT_PATH_ON_UC_MANAGED_TABLE

Spécifier les chemins de table explicites inutilisés sur les tables gérées par UC.

FOREACH_BATCH_FUNCTION_NOT_SERIALIZABLE

La fonction foreachBatch fournie n'est pas sérialisable.

DROP_PARTITION_COLS_NO_PARTITIONING

La suppression de l'attribut partition_cols n'entraîne aucun partitionnement.

PYTHON_CREATE_TABLE

Utilisation de @dlt.create_table au lieu de @dp.table ou @dp.materialized_view.

PYTHON_CREATE_VIEW

Utilisation de @dlt.create_view plutôt que @dp.temporary_view.

PYTHON_CREATE_STREAMING_LIVE_TABLE

Utilisation de create_streaming_live_table au lieu de create_streaming_table.

PYTHON_CREATE_TARGET_TABLE

Utilisation de create_target_table au lieu de create_streaming_table.

FOREIGN_KEY_TABLE_CONSTRAINT_CYCLE

L'ensemble de tables gérées par le pipeline présente un cycle dans l'ensemble des contraintes de clé étrangère.

PARTIALLY_QUALIFIED_TABLE_REFERENCE_INCOMPATIBLE_WITH_DEFAULT_PUBLISHING_MODE

Une référence de table partiellement qualifiée qui a des significations différentes en mode de publication default et en mode de publication hérité.

Détails pour l'événement de ressources de cluster

Les détails d'un événement cluster_resources. Applicable uniquement pour les pipelines exécutés sur le compute classique.

Champ

Description

task_slot_metrics

Les métriques d'emplacement de tâche du cluster. Pour plus de détails, consultez l'objet TaskSlotMetrics.

autoscale_info

L'état des autoscalers. Pour plus de détails, consultez l'objet AutoscaleInfo.

Champ

Description

task_slot_metrics

Les métriques d'emplacement de tâche du cluster. Pour plus de détails, consultez l'objet TaskSlotMetrics.

autoscale_info

L'état des autoscalers. Pour plus de détails, consultez l'objet AutoscaleInfo.

Détails de l'événement de mise à l'échelle automatique

Les détails d'un événement autoscale. Les événements de mise à l'échelle automatique sont uniquement applicables lorsque le pipeline utilise le compute classique.

Champ

Description

status

Statut de cet événement. Peut être l’une des options suivantes :

  • SUCCEEDED
  • RESIZING
  • FAILED
  • PARTIALLY_SUCCEEDED

optimal_num_executors

Le nombre optimal d’exécuteurs suggéré par l’algorithme avant l’application des bornes min_workers et max_workers.

requested_num_executors

Le nombre d'exécuteurs après avoir tronqué le nombre optimal d'exécuteurs suggéré par l'algorithme aux limites min_workers et max_workers.

Champ

Description

status

Statut de cet événement. Peut être l’une des options suivantes :

  • SUCCEEDED
  • RESIZING
  • FAILED
  • PARTIALLY_SUCCEEDED

optimal_num_executors

Le nombre optimal d’exécuteurs suggéré par l’algorithme avant l’application des bornes min_workers et max_workers.

requested_num_executors

Le nombre d'exécuteurs après avoir tronqué le nombre optimal d'exécuteurs suggéré par l'algorithme aux limites min_workers et max_workers.

Détails de l'événement planning_information

Les détails d'un événement planning_information. Utile pour consulter les détails liés au type de refresh choisi pour un flux donné lors d’une mise à jour. Peut être utilisé pour aider à déboguer pourquoi une mise à jour est entièrement refreshée plutôt que refreshée de manière incrémentielle. Pour plus de détails sur les incremental refresh, consultez Incremental refresh pour les vues matérialisées.

Champ

Description

technique_information

Informations relatives à refresh. Il inclut à la fois des informations sur la méthodologie de refresh choisie et les méthodologies de refresh possibles qui ont été envisagées. Utile pour le debugging expliquant pourquoi une vue matérialisée n'a pas pu s'incrémentaliser. Pour plus de détails, consultez Informations techniques.

source_table_information

Informations de la table source. Peut être utile pour le debugging des raisons pour lesquelles l'incrémentation d'une vue matérialisée a échoué. Pour plus de détails, consultez l'objet TableInformation.

target_table_information

Informations sur la table cible. Pour plus de détails, consultez l'objet TableInformation.

Champ

Description

technique_information

Informations relatives à refresh. Il inclut à la fois des informations sur la méthodologie de refresh choisie et les méthodologies de refresh possibles qui ont été envisagées. Utile pour le debugging expliquant pourquoi une vue matérialisée n'a pas pu s'incrémentaliser. Pour plus de détails, consultez Informations techniques.

source_table_information

Informations de la table source. Peut être utile pour le debugging des raisons pour lesquelles l'incrémentation d'une vue matérialisée a échoué. Pour plus de détails, consultez l'objet TableInformation.

target_table_information

Informations sur la table cible. Pour plus de détails, consultez l'objet TableInformation.

Détails de l'événement hook_progress

Les détails d'un événement hook_progress. Comprend les champs suivants :

Champ

Description

name

Le nom du hook utilisateur.

status

Le statut du hook utilisateur.

Champ

Description

name

Le nom du hook utilisateur.

status

Le statut du hook utilisateur.

Détails pour l'événement operation_progress

Les détails d'un événement operation_progress. Comprend les champs suivants :

Champ

Description

type

Le type d'Opérations suivies. Un de :

  • AUTO_LOADER_LISTING
  • AUTO_LOADER_BACKFILL
  • CONNECTOR_FETCH
  • CDC_SNAPSHOT

status

L'état de l'opération. Un de :

  • STARTED
  • COMPLETED
  • CANCELED
  • FAILED
  • IN_PROGRESS

duration_ms

Le temps total écoulé de l'Opérations en millisecondes. Uniquement inclus dans l'événement de fin (où le statut est COMPLETED, CANCELED ou FAILED).

Champ

Description

type

Le type d'Opérations suivies. Un de :

  • AUTO_LOADER_LISTING
  • AUTO_LOADER_BACKFILL
  • CONNECTOR_FETCH
  • CDC_SNAPSHOT

status

L'état de l'opération. Un de :

  • STARTED
  • COMPLETED
  • CANCELED
  • FAILED
  • IN_PROGRESS

duration_ms

Le temps total écoulé de l'Opérations en millisecondes. Uniquement inclus dans l'événement de fin (où le statut est COMPLETED, CANCELED ou FAILED).

Détails pour l'événement stream_progress

Les détails d'un événement stream_progress. Comprend le champ suivant :

Champ

Description

stream_progress

Les détails du stream de pipeline. Similaire aux métriques StreamingQueryListener pour Structured Streaming.

Les différences sont décrites dans les paragraphes suivants. Pour une documentation complète sur les métriques StreamingQueryListener, consultez les métriques d'objet StreamingQueryListener.

Champ

Description

stream_progress

Les détails du stream de pipeline. Similaire aux métriques StreamingQueryListener pour Structured Streaming.

Les différences sont décrites dans les paragraphes suivants. Pour une documentation complète sur les métriques StreamingQueryListener, consultez les métriques d'objet StreamingQueryListener.

Différences entre les métriques d'objet stream_progress et StreamingQueryListener :

  • Les métriques suivantes sont présentes dans StreamingQueryListener, mais pas dans stream_progress: numInputRows, inputRowsPerSecond et processedRowsPerSecond.
  • Pour les flux Kafka et Kinesis, les champs startOffset, endOffset et latestOffset peuvent être trop volumineux et sont tronqués. Pour chacun de ces champs, un champ ...Truncated supplémentaire, startOffsetTruncated, endOffsetTruncated et latestOffsetTruncated, est ajouté avec une valeur booléenne indiquant si les données sont tronquées.

Détails de l'événement behavior_change_in_spark_connect

Les détails d'un événement behavior_change_in_spark_connect. Cet événement est émis au niveau WARN par l'analyse de compatibilité de la version d'environnement, un événement par modèle de code détecté.

Champ

Description

issue

Le modèle détecté. Pour la liste complète des codes de problème, des exemples et des correctifs suggérés, consultez la Référence des événements de compatibilité.

Champ

Description

issue

Le modèle détecté. Pour la liste complète des codes de problème, des exemples et des correctifs suggérés, consultez la Référence des événements de compatibilité.

Autres objets

Les objets suivants représentent des données additionnelles ou des types énumérés au sein des objets d'événement.

Objet AutoscaleInfo

Les métriques de mise à l'échelle automatique pour un cluster. Applicable uniquement pour les pipelines exécutés sur le compute classique.

Champ

Description

state

Le statut de l'autoscaling. Peut être l’une des options suivantes :

  • SUCCEEDED
  • RESIZING
  • FAILED
  • PARTIALLY_SUCCEEDED

optimal_num_executors

Le nombre optimal d'exécuteurs. Il s'agit de la taille optimale suggérée par l'algorithme avant d'être tronquée par le nombre minimal/maximal d'exécuteurs spécifié par l'utilisateur.

latest_requested_num_executors

Le nombre d'exécuteurs demandés au gestionnaire de clusters par le gestionnaire d'état lors de la dernière requête. Il s'agit du nombre d'exécuteurs que le gestionnaire d'état tente de monter en charge, et est mis à jour lorsque le gestionnaire d'état tente de quitter l'état de mise à l'échelle en cas de dépassement de délai. Ce champ n'est pas renseigné s'il n'y a pas de demande en attente.

request_pending_seconds

La durée de la requête de mise à l'échelle en attente. Ceci n'est pas renseigné s'il n'y a aucune demande en attente.

Champ

Description

state

Le statut de l'autoscaling. Peut être l’une des options suivantes :

  • SUCCEEDED
  • RESIZING
  • FAILED
  • PARTIALLY_SUCCEEDED

optimal_num_executors

Le nombre optimal d'exécuteurs. Il s'agit de la taille optimale suggérée par l'algorithme avant d'être tronquée par le nombre minimal/maximal d'exécuteurs spécifié par l'utilisateur.

latest_requested_num_executors

Le nombre d'exécuteurs demandés au gestionnaire de clusters par le gestionnaire d'état lors de la dernière requête. Il s'agit du nombre d'exécuteurs que le gestionnaire d'état tente de monter en charge, et est mis à jour lorsque le gestionnaire d'état tente de quitter l'état de mise à l'échelle en cas de dépassement de délai. Ce champ n'est pas renseigné s'il n'y a pas de demande en attente.

request_pending_seconds

La durée de la requête de mise à l'échelle en attente. Ceci n'est pas renseigné s'il n'y a aucune demande en attente.

Objet CostModelRejectionSubType

Une énumération des raisons pour lesquelles l'incrémentation est rejetée, basée sur le coût d'un full refresh par rapport à un incremental refresh lors d'un événement planning_information.

Valeur

Description

NUM_JOINS_THRESHOLD_EXCEEDED

Fully refresh, car la query contient trop de jointures.

CHANGESET_SIZE_THRESHOLD_EXCEEDED

refresh complète car trop de lignes dans les tables de base ont été modifiées.

TABLE_SIZE_THRESHOLD_EXCEEDED

Fully Refresh because the base table size exceeded the threshold.

EXCESSIVE_OPERATOR_NESTING

Fully refresh because the query definition is complexe et présente de nombreux niveaux d'imbrication d'opérateurs.

COST_MODEL_REJECTION_SUB_TYPE_UNSPECIFIED

refresh complètement pour toute autre raison.

Valeur

Description

NUM_JOINS_THRESHOLD_EXCEEDED

Fully refresh, car la query contient trop de jointures.

CHANGESET_SIZE_THRESHOLD_EXCEEDED

refresh complète car trop de lignes dans les tables de base ont été modifiées.

TABLE_SIZE_THRESHOLD_EXCEEDED

Fully Refresh because the base table size exceeded the threshold.

EXCESSIVE_OPERATOR_NESTING

Fully refresh because the query definition is complexe et présente de nombreux niveaux d'imbrication d'opérateurs.

COST_MODEL_REJECTION_SUB_TYPE_UNSPECIFIED

refresh complètement pour toute autre raison.

Objet DataQualityMetrics

Métriques sur la manière dont les attentes sont satisfaites au sein du flux. Utilisé dans les détails d'un événement flow_progress.

Champ

Description

dropped_records

Le nombre d'enregistrements qui ont été ignorés parce qu'ils n'ont pas satisfait à une ou plusieurs attentes.

expectations

Métriques pour les attentes ajoutées à tout dataset dans le plan de query du flux. Lorsqu'il y a plusieurs attentes, ceci peut être utilisé pour suivre celles qui ont été satisfaites ou non. Pour plus de détails, consultez l'objet ExpectationMetrics.

Champ

Description

dropped_records

Le nombre d'enregistrements qui ont été ignorés parce qu'ils n'ont pas satisfait à une ou plusieurs attentes.

expectations

Métriques pour les attentes ajoutées à tout dataset dans le plan de query du flux. Lorsqu'il y a plusieurs attentes, ceci peut être utilisé pour suivre celles qui ont été satisfaites ou non. Pour plus de détails, consultez l'objet ExpectationMetrics.

Objet ExpectationMetrics

Métriques concernant les attentes, pour une attente spécifique.

Champ

Description

name

Le nom de l'attente.

dataset

Le nom du dataset auquel l’attente a été ajoutée.

passed_records

Le nombre d'enregistrements qui répondent à l'attente.

failed_records

Le nombre d’enregistrements qui ne répondent pas aux attentes. Indique si l'attente a été satisfaite, mais ne décrit pas ce qui arrive aux enregistrements (avertir, échouer ou ignorer les enregistrements).

Champ

Description

name

Le nom de l'attente.

dataset

Le nom du dataset auquel l’attente a été ajoutée.

passed_records

Le nombre d'enregistrements qui répondent à l'attente.

failed_records

Le nombre d’enregistrements qui ne répondent pas aux attentes. Indique si l'attente a été satisfaite, mais ne décrit pas ce qui arrive aux enregistrements (avertir, échouer ou ignorer les enregistrements).

Objet FlowMetrics

Métriques relatives au flux, y compris le total pour le flux, et ventilées par source spécifique. Utilisé dans les détails d'un événement flow_progress.

Chaque source de streaming prend en charge uniquement des métriques de flux spécifiques. Le tableau suivant présente les indicateurs disponibles pour les sources de streaming prises en charge :

Source

octets de backlog

enregistrements du backlog

secondes de backlog

fichiers de backlog

Kafka

Kinesis

Delta

Auto Loader

Google Pub/Sub

Source

octets de backlog

enregistrements du backlog

secondes de backlog

fichiers de backlog

Kafka

Kinesis

Delta

Auto Loader

Google Pub/Sub

Champ

Description

num_output_rows

Nombre de lignes de sortie écrites par une mise à jour de ce flux.

backlog_bytes

Backlog total en octets sur toutes les sources d'entrée du flux.

backlog_records

Nombre total d’enregistrements en retard pour toutes les sources d’entrée du flux.

backlog_files

Nombre total de fichiers en attente pour toutes les sources d'entrée dans le flux.

backlog_seconds

Nombre maximal de secondes de backlog pour toutes les sources d'entrée dans le flux.

executor_time_ms

Somme de tous les temps d'exécution des tâches en millisecondes de ce flux sur la période de rapport.

executor_cpu_time_ms

Somme de tous les temps CPU d'exécution des tâches en millisecondes de ce flux sur la période de rapport.

num_upserted_rows

Nombre de lignes de sortie insérées ou mises à jour dans le dataset par une mise à jour de ce flux.

num_deleted_rows

Nombre de lignes de sortie existantes supprimées du dataset par une mise à jour de ce flux.

num_output_bytes

Nombre d'octets de sortie écrits par une mise à jour de ce flux.

source_metrics

Métriques pour chaque source d'entrée dans le flux. Utile pour le monitoring de la progression de l'ingestion à partir de sources externes aux Lakeflow pipelines (comme Apache Kafka, Pulsar ou Auto Loader). Comprend les champs :

  • source_name: Le nom de la source.
  • backlog_bytes: Backlog en octets pour cette source.
  • backlog_records: Enregistrements de backlog pour cette source.
  • backlog_files: Fichiers de backlog pour cette source.
  • backlog_seconds: Secondes de backlog pour cette source.

Champ

Description

num_output_rows

Nombre de lignes de sortie écrites par une mise à jour de ce flux.

backlog_bytes

Backlog total en octets sur toutes les sources d'entrée du flux.

backlog_records

Nombre total d’enregistrements en retard pour toutes les sources d’entrée du flux.

backlog_files

Nombre total de fichiers en attente pour toutes les sources d'entrée dans le flux.

backlog_seconds

Nombre maximal de secondes de backlog pour toutes les sources d'entrée dans le flux.

executor_time_ms

Somme de tous les temps d'exécution des tâches en millisecondes de ce flux sur la période de rapport.

executor_cpu_time_ms

Somme de tous les temps CPU d'exécution des tâches en millisecondes de ce flux sur la période de rapport.

num_upserted_rows

Nombre de lignes de sortie insérées ou mises à jour dans le dataset par une mise à jour de ce flux.

num_deleted_rows

Nombre de lignes de sortie existantes supprimées du dataset par une mise à jour de ce flux.

num_output_bytes

Nombre d'octets de sortie écrits par une mise à jour de ce flux.

source_metrics

Métriques pour chaque source d'entrée dans le flux. Utile pour le monitoring de la progression de l'ingestion à partir de sources externes aux Lakeflow pipelines (comme Apache Kafka, Pulsar ou Auto Loader). Comprend les champs :

  • source_name: Le nom de la source.
  • backlog_bytes: Backlog en octets pour cette source.
  • backlog_records: Enregistrements de backlog pour cette source.
  • backlog_files: Fichiers de backlog pour cette source.
  • backlog_seconds: Secondes de backlog pour cette source.

Objet IncrementalizationIssue

Représente les problèmes d’incémentalisation qui pourraient provoquer un refresh complet lors de la planification d’une mise à jour.

Champ

Description

issue_type

Un type de problème qui pourrait empêcher la vue matérialisée d'être incrémentée. Pour plus de détails, consultez le Type de problème.

prevent_incrementalization

Si ce problème a empêché l'incrémentalisation.

table_information

Informations sur la table associées à des problèmes tels que CDF_UNAVAILABLE, INPUT_NOT_IN_DELTA, DATA_FILE_MISSING.

operator_name

Informations liées au plan. Définir pour les problèmes lorsque le type de problème est PLAN_NOT_DETERMINISTIC ou PLAN_NOT_INCREMENTALIZABLE pour l'opérateur ou l'expression qui provoque le non-déterminisme ou la non-incrémentalité.

expression_name

Le nom de l'expression.

join_type

Informations auxiliaires lorsque l'opérateur est une jointure. Par exemple, JOIN_TYPE_LEFT_OUTER ou JOIN_TYPE_INNER.

plan_not_incrementalizable_sub_type

Catégorie détaillée lorsque le type de problème est PLAN_NOT_INCREMENTALIZABLE. Pour plus de détails, consultez l'objet PlanNotIncrementalizableSubType.

plan_not_deterministic_sub_type

Catégorie détaillée lorsque le type de problème est PLAN_NOT_DETERMINISTIC. Pour plus de détails, consultez PlanNotDeterministicSubType object.

fingerprint_diff_before

La différence par rapport à l'empreinte précédente.

fingerprint_diff_current

La différence par rapport à l'empreinte actuelle.

cost_model_rejection_subtype

Catégorie détaillée lorsque le type de problème est INCREMENTAL_PLAN_REJECTED_BY_COST_MODEL. Pour plus de détails, consultez l'objet CostModelRejectionSubType.

Champ

Description

issue_type

Un type de problème qui pourrait empêcher la vue matérialisée d'être incrémentée. Pour plus de détails, consultez le Type de problème.

prevent_incrementalization

Si ce problème a empêché l'incrémentalisation.

table_information

Informations sur la table associées à des problèmes tels que CDF_UNAVAILABLE, INPUT_NOT_IN_DELTA, DATA_FILE_MISSING.

operator_name

Informations liées au plan. Définir pour les problèmes lorsque le type de problème est PLAN_NOT_DETERMINISTIC ou PLAN_NOT_INCREMENTALIZABLE pour l'opérateur ou l'expression qui provoque le non-déterminisme ou la non-incrémentalité.

expression_name

Le nom de l'expression.

join_type

Informations auxiliaires lorsque l'opérateur est une jointure. Par exemple, JOIN_TYPE_LEFT_OUTER ou JOIN_TYPE_INNER.

plan_not_incrementalizable_sub_type

Catégorie détaillée lorsque le type de problème est PLAN_NOT_INCREMENTALIZABLE. Pour plus de détails, consultez l'objet PlanNotIncrementalizableSubType.

plan_not_deterministic_sub_type

Catégorie détaillée lorsque le type de problème est PLAN_NOT_DETERMINISTIC. Pour plus de détails, consultez PlanNotDeterministicSubType object.

fingerprint_diff_before

La différence par rapport à l'empreinte précédente.

fingerprint_diff_current

La différence par rapport à l'empreinte actuelle.

cost_model_rejection_subtype

Catégorie détaillée lorsque le type de problème est INCREMENTAL_PLAN_REJECTED_BY_COST_MODEL. Pour plus de détails, consultez l'objet CostModelRejectionSubType.

Objet IssueType

Une énumération de types de problèmes pouvant entraîner une refresh complète.

Les problèmes clés de refresh sont également mis en évidence dans l’éditeur de pipeline et lorsque vous surveillez un pipeline. Consultez les aperçus sur l'incrémentalisation.

Valeur

Description

CDF_UNAVAILABLE

Le CDF (Change Data Feed) n'est pas activé sur certaines tables de base. Le champ table_information donne des informations sur la table qui n'a pas le CDF activé. Utilisez ALTER TABLE <table-name> SET TBLPROPERTIES ( 'delta.enableChangeDataFeed' = true) pour activer le CDF pour la table de base. Si la table source est une vue matérialisée, le CDF doit être défini sur ON by default.

DELTA_PROTOCOL_CHANGED

refresh complète car certaines tables de base (détails dans le champ table_information) ont subi une modification de protocole Delta.

DATA_SCHEMA_CHANGED

Refresh complet car certaines tables de base (détails dans le champ table_information) ont eu une modification de schéma de données dans les colonnes utilisées par la définition de la vue matérialisée. Non pertinent si une colonne que la vue matérialisée n’utilise pas a été modifiée ou ajoutée à la table de base.

PARTITION_SCHEMA_CHANGED

Fully refresh parce que certaines tables de base (détails dans le champ table_information) ont eu une modification du schéma de partition.

INPUT_NOT_IN_DELTA

Fully refresh car la définition de la vue matérialisée implique une entrée non-Delta.

DATA_FILE_MISSING

refresh complet car certains fichiers de la table de base sont déjà vacuumed en raison de leur période de rétention.

PLAN_NOT_DETERMINISTIC

Fully refresh because some operators or expressions in the materialized view definition are not deterministic. Les champs operator_name et expression_name fournissent des informations sur l'opérateur ou l'expression qui a causé le problème.

PLAN_NOT_INCREMENTALIZABLE

Fully refresh because some operators or expressions in the materialized view definition are not incrementalizable.

SERIALIZATION_VERSION_CHANGED

refresh complet car il y a eu un changement significatif dans la logique d'empreinte digitale de la query.

QUERY_FINGERPRINT_CHANGED

Effectuer un refresh complet parce que la définition de la vue matérialisée a changé, ou qu'une version de LakeFlow Pipelines a entraîné une modification des plans d'évaluation des querys.

CONFIGURATION_CHANGED

Fully refresh complète, car des configurations clés (par exemple, spark.sql.ansi.enabled) qui pourraient affecter l'évaluation de la requête ont changé. Un nouveau calcul complet est nécessaire pour éviter les états incohérents dans la vue matérialisée.

CHANGE_SET_MISSING

Effectuez un refresh complet car il s'agit du premier compute de la vue matérialisée. Ceci est le comportement attendu pour le compute initial de la vue matérialisée.

EXPECTATIONS_NOT_SUPPORTED

Fully refresh because the materialized view definition includes expectations, which are not supported for incremental updates. Supprimez les attentes ou gérez-les en dehors de la définition de la vue matérialisée si le support incrémentiel est nécessaire.

TOO_MANY_FILE_ACTIONS

Fully refresh, car le nombre d’actions de fichier a dépassé le threshold de traitement incrémental. Envisagez de réduire la rotation des fichiers dans les tables de base ou d'augmenter les thresholds.

INCREMENTAL_PLAN_REJECTED_BY_COST_MODEL

Fully refresh because the cost model determined that a full refresh is more efficient than incremental maintenance. Examinez le comportement du modèle de coût ou la complexité du plan de query pour autoriser les mises à jour incrémentielles.

ROW_TRACKING_NOT_ENABLED

Fully refresh because le suivi de ligne n’est pas activé sur une ou plusieurs tables de base. Activez le suivi des lignes à l'aide de ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableRowTracking' = true).

TOO_MANY_PARTITIONS_CHANGED

Effectuer un refresh complet car trop de partitions ont changé dans les tables de base. Essayez de limiter le nombre de modifications de partition pour rester dans les limites de traitement incrémentiel.

MAP_TYPE_NOT_SUPPORTED

Fully refresh because the materialized view definition includes a map type, which is not supported for incremental refresh. Envisagez de restructurer les données pour éviter les types de mappage dans la vue matérialisée.

TIME_ZONE_CHANGED

Refresh complet, car le paramètre de fuseau horaire de la session ou du système a changé.

DATA_HAS_CHANGED

refresh complète car les données relatives à la vue matérialisée ont changé d'une manière qui empêche les mises à jour incrémentielles. Evaluez les modifications de données et la structure de la définition de la vue afin d'assurer la compatibilité avec la logique incrémentielle.

PRIOR_TIMESTAMP_MISSING

Effectuer un refresh complet car le Timestamp de la dernière exécution réussie est manquant. Cela peut se produire après une perte de métadonnées ou une intervention manuelle.

Valeur

Description

CDF_UNAVAILABLE

Le CDF (Change Data Feed) n'est pas activé sur certaines tables de base. Le champ table_information donne des informations sur la table qui n'a pas le CDF activé. Utilisez ALTER TABLE <table-name> SET TBLPROPERTIES ( 'delta.enableChangeDataFeed' = true) pour activer le CDF pour la table de base. Si la table source est une vue matérialisée, le CDF doit être défini sur ON by default.

DELTA_PROTOCOL_CHANGED

refresh complète car certaines tables de base (détails dans le champ table_information) ont subi une modification de protocole Delta.

DATA_SCHEMA_CHANGED

Refresh complet car certaines tables de base (détails dans le champ table_information) ont eu une modification de schéma de données dans les colonnes utilisées par la définition de la vue matérialisée. Non pertinent si une colonne que la vue matérialisée n’utilise pas a été modifiée ou ajoutée à la table de base.

PARTITION_SCHEMA_CHANGED

Fully refresh parce que certaines tables de base (détails dans le champ table_information) ont eu une modification du schéma de partition.

INPUT_NOT_IN_DELTA

Fully refresh car la définition de la vue matérialisée implique une entrée non-Delta.

DATA_FILE_MISSING

refresh complet car certains fichiers de la table de base sont déjà vacuumed en raison de leur période de rétention.

PLAN_NOT_DETERMINISTIC

Fully refresh because some operators or expressions in the materialized view definition are not deterministic. Les champs operator_name et expression_name fournissent des informations sur l'opérateur ou l'expression qui a causé le problème.

PLAN_NOT_INCREMENTALIZABLE

Fully refresh because some operators or expressions in the materialized view definition are not incrementalizable.

SERIALIZATION_VERSION_CHANGED

refresh complet car il y a eu un changement significatif dans la logique d'empreinte digitale de la query.

QUERY_FINGERPRINT_CHANGED

Effectuer un refresh complet parce que la définition de la vue matérialisée a changé, ou qu'une version de LakeFlow Pipelines a entraîné une modification des plans d'évaluation des querys.

CONFIGURATION_CHANGED

Fully refresh complète, car des configurations clés (par exemple, spark.sql.ansi.enabled) qui pourraient affecter l'évaluation de la requête ont changé. Un nouveau calcul complet est nécessaire pour éviter les états incohérents dans la vue matérialisée.

CHANGE_SET_MISSING

Effectuez un refresh complet car il s'agit du premier compute de la vue matérialisée. Ceci est le comportement attendu pour le compute initial de la vue matérialisée.

EXPECTATIONS_NOT_SUPPORTED

Fully refresh because the materialized view definition includes expectations, which are not supported for incremental updates. Supprimez les attentes ou gérez-les en dehors de la définition de la vue matérialisée si le support incrémentiel est nécessaire.

TOO_MANY_FILE_ACTIONS

Fully refresh, car le nombre d’actions de fichier a dépassé le threshold de traitement incrémental. Envisagez de réduire la rotation des fichiers dans les tables de base ou d'augmenter les thresholds.

INCREMENTAL_PLAN_REJECTED_BY_COST_MODEL

Fully refresh because the cost model determined that a full refresh is more efficient than incremental maintenance. Examinez le comportement du modèle de coût ou la complexité du plan de query pour autoriser les mises à jour incrémentielles.

ROW_TRACKING_NOT_ENABLED

Fully refresh because le suivi de ligne n’est pas activé sur une ou plusieurs tables de base. Activez le suivi des lignes à l'aide de ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableRowTracking' = true).

TOO_MANY_PARTITIONS_CHANGED

Effectuer un refresh complet car trop de partitions ont changé dans les tables de base. Essayez de limiter le nombre de modifications de partition pour rester dans les limites de traitement incrémentiel.

MAP_TYPE_NOT_SUPPORTED

Fully refresh because the materialized view definition includes a map type, which is not supported for incremental refresh. Envisagez de restructurer les données pour éviter les types de mappage dans la vue matérialisée.

TIME_ZONE_CHANGED

Refresh complet, car le paramètre de fuseau horaire de la session ou du système a changé.

DATA_HAS_CHANGED

refresh complète car les données relatives à la vue matérialisée ont changé d'une manière qui empêche les mises à jour incrémentielles. Evaluez les modifications de données et la structure de la définition de la vue afin d'assurer la compatibilité avec la logique incrémentielle.

PRIOR_TIMESTAMP_MISSING

Effectuer un refresh complet car le Timestamp de la dernière exécution réussie est manquant. Cela peut se produire après une perte de métadonnées ou une intervention manuelle.

Objet MaintenanceType

Une énumération des types de maintenance pouvant être choisis lors d'un événement planning_information. Si le type n'est pas MAINTENANCE_TYPE_COMPLETE_RECOMPUTE ou MAINTENANCE_TYPE_NO_OP, le type est un refresh incrémentiel.

Valeur

Description

MAINTENANCE_TYPE_COMPLETE_RECOMPUTE

Nouveau calcul complet ; toujours affiché.

MAINTENANCE_TYPE_NO_OP

Lorsque les tables de base ne changent pas.

MAINTENANCE_TYPE_PARTITION_OVERWRITE

refresh progressivement les partitions affectées lorsque la vue matérialisée est co-partitionnée avec l'une des tables source.

MAINTENANCE_TYPE_ROW_BASED

refresh de manière incrémentielle en créant des ensembles de modifications modulaires pour diverses opérations, telles que JOIN, FILTER et UNION ALL,, et en les composant pour calculer des queries complexes. Utilisé lorsque le suivi des lignes pour les tables sources est activé et qu’il y a un nombre limité de jointures pour la query.

MAINTENANCE_TYPE_APPEND_ONLY

Incrementally refresh by only computing new rows because there were no upserts or deletes in the source tables.

MAINTENANCE_TYPE_GROUP_AGGREGATE

Effectuez un refresh incrémentiel en calculant les modifications pour chaque valeur agrégée. Utilisé lorsque des agrégats associatifs, tels que count, sum, mean et stddev, se trouvent au niveau le plus élevé de la query.

MAINTENANCE_TYPE_GENERIC_AGGREGATE

refresh de manière incrémentielle en calculant uniquement les groupes agrégés concernés. Utilisé lorsque des agrégats comme median (pas seulement les associatifs) sont au niveau le plus élevé de la requête.

MAINTENANCE_TYPE_WINDOW_FUNCTION

refresh progressivement les requêtes avec des fonctions de fenêtre telles que PARTITION BY en recalculant uniquement les partitions modifiées. Utilisé lorsque toutes les fonctions de fenêtre ont une clause PARTITION BY ou JOIN et se trouvent au niveau le plus élevé de la query.

Valeur

Description

MAINTENANCE_TYPE_COMPLETE_RECOMPUTE

Nouveau calcul complet ; toujours affiché.

MAINTENANCE_TYPE_NO_OP

Lorsque les tables de base ne changent pas.

MAINTENANCE_TYPE_PARTITION_OVERWRITE

refresh progressivement les partitions affectées lorsque la vue matérialisée est co-partitionnée avec l'une des tables source.

MAINTENANCE_TYPE_ROW_BASED

refresh de manière incrémentielle en créant des ensembles de modifications modulaires pour diverses opérations, telles que JOIN, FILTER et UNION ALL,, et en les composant pour calculer des queries complexes. Utilisé lorsque le suivi des lignes pour les tables sources est activé et qu’il y a un nombre limité de jointures pour la query.

MAINTENANCE_TYPE_APPEND_ONLY

Incrementally refresh by only computing new rows because there were no upserts or deletes in the source tables.

MAINTENANCE_TYPE_GROUP_AGGREGATE

Effectuez un refresh incrémentiel en calculant les modifications pour chaque valeur agrégée. Utilisé lorsque des agrégats associatifs, tels que count, sum, mean et stddev, se trouvent au niveau le plus élevé de la query.

MAINTENANCE_TYPE_GENERIC_AGGREGATE

refresh de manière incrémentielle en calculant uniquement les groupes agrégés concernés. Utilisé lorsque des agrégats comme median (pas seulement les associatifs) sont au niveau le plus élevé de la requête.

MAINTENANCE_TYPE_WINDOW_FUNCTION

refresh progressivement les requêtes avec des fonctions de fenêtre telles que PARTITION BY en recalculant uniquement les partitions modifiées. Utilisé lorsque toutes les fonctions de fenêtre ont une clause PARTITION BY ou JOIN et se trouvent au niveau le plus élevé de la query.

Objet source

D'où l'événement est originaire.

Champ

Description

cloud

Le fournisseur cloud. Les valeurs possibles sont :

  • AWS
  • Azure
  • GCP

region

La région cloud.

org_id

L'ID de l'organisation ou l'ID du workspace de l'utilisateur. Unique au sein d'un cloud. Utile pour identifier le workspace ou pour joindre avec d'autres tables, telles que les tables de facturation système.

pipeline_id

L'ID du pipeline. Un identifiant unique pour le pipeline. Utile pour identifier le pipeline ou pour joindre avec d'autres tables, telles que les tables de facturation système.

pipeline_type

Le type de pipeline pour indiquer où le pipeline a été créé. Les valeurs possibles sont :

  • WORKSPACE: Un pipeline ETL créé via un Lakeflow pipeline. See Spark Declarative Pipelines.
  • DBSQL: un pipeline autonome. Consultez la rubrique Pipelines autonomes.
  • MANAGED_INGESTION: un pipeline d'ingestion géré par Lakeflow Connect. Consultez les connecteurs gérés dans Lakeflow Connect.
  • DATABASE_TABLE_SYNC: Un pipeline qui synchronise une table avec une base de données Lakebase.
  • BRICKSTORE: Un pipeline pour mettre à jour une table en ligne pour le Feature Serving en temps réel. Les tables en ligne sont héritées.
  • BRICKINDEX: Un pipeline pour mettre à jour une base de données vectorielles. Voir les recherches Databricks AI.

pipeline_name

Le nom du pipeline.

cluster_id

L'ID du cluster où une exécution a lieu. Unique à l'échelle mondiale.

update_id

L'ID d'une seule exécution du pipeline. C'est l'équivalent de l'ID d'exécution.

table_name

Le nom de la table (Delta) sur laquelle l'écriture est effectuée.

dataset_name

Le nom entièrement qualifié d'un dataset.

sink_name

Le nom d'un puits.

flow_id

L'ID du flux. Il suit l'état du flux utilisé sur plusieurs mises à jour. Tant que le flow_id est le même, le flux est actualisé de manière incrémentielle. Le flow_id change lorsque la vue matérialisée effectue un refresh complet, que le point de contrôle se Reset, ou qu'une recomposition complète a lieu au sein de la vue matérialisée.

flow_name

Le nom du flux.

batch_id

L'ID d'un microbatch. Unique dans un flux.

request_id

L'ID de la demande qui a provoqué une mise à jour.

Champ

Description

cloud

Le fournisseur cloud. Les valeurs possibles sont :

  • AWS
  • Azure
  • GCP

region

La région cloud.

org_id

L'ID de l'organisation ou l'ID du workspace de l'utilisateur. Unique au sein d'un cloud. Utile pour identifier le workspace ou pour joindre avec d'autres tables, telles que les tables de facturation système.

pipeline_id

L'ID du pipeline. Un identifiant unique pour le pipeline. Utile pour identifier le pipeline ou pour joindre avec d'autres tables, telles que les tables de facturation système.

pipeline_type

Le type de pipeline pour indiquer où le pipeline a été créé. Les valeurs possibles sont :

  • WORKSPACE: Un pipeline ETL créé via un Lakeflow pipeline. See Spark Declarative Pipelines.
  • DBSQL: un pipeline autonome. Consultez la rubrique Pipelines autonomes.
  • MANAGED_INGESTION: un pipeline d'ingestion géré par Lakeflow Connect. Consultez les connecteurs gérés dans Lakeflow Connect.
  • DATABASE_TABLE_SYNC: Un pipeline qui synchronise une table avec une base de données Lakebase.
  • BRICKSTORE: Un pipeline pour mettre à jour une table en ligne pour le Feature Serving en temps réel. Les tables en ligne sont héritées.
  • BRICKINDEX: Un pipeline pour mettre à jour une base de données vectorielles. Voir les recherches Databricks AI.

pipeline_name

Le nom du pipeline.

cluster_id

L'ID du cluster où une exécution a lieu. Unique à l'échelle mondiale.

update_id

L'ID d'une seule exécution du pipeline. C'est l'équivalent de l'ID d'exécution.

table_name

Le nom de la table (Delta) sur laquelle l'écriture est effectuée.

dataset_name

Le nom entièrement qualifié d'un dataset.

sink_name

Le nom d'un puits.

flow_id

L'ID du flux. Il suit l'état du flux utilisé sur plusieurs mises à jour. Tant que le flow_id est le même, le flux est actualisé de manière incrémentielle. Le flow_id change lorsque la vue matérialisée effectue un refresh complet, que le point de contrôle se Reset, ou qu'une recomposition complète a lieu au sein de la vue matérialisée.

flow_name

Le nom du flux.

batch_id

L'ID d'un microbatch. Unique dans un flux.

request_id

L'ID de la demande qui a provoqué une mise à jour.

Objet de sous-type PlanNotDeterministicSubType

Une énumération de cas non déterministes pour un événement planning_information.

Valeur

Description

STREAMING_SOURCE

refresh complètement parce que la définition de la vue matérialisée inclut une source de streaming, ce qui n'est pas pris en charge.

USER_DEFINED_FUNCTION

refresh complète car la vue matérialisée inclut une fonction définie par l'utilisateur non prise en charge. Seuls les UDF Python déterministes sont pris en charge. D'autres UDF pourraient empêcher les mises à jour incrémentielles.

TIME_FUNCTION

Fully refresh because the materialized view includes a time-based function such as CURRENT_DATE or CURRENT_TIMESTAMP. La propriété expression_name fournit le nom de la fonction non prise en charge.

NON_DETERMINISTIC_EXPRESSION

Fully refresh car la query inclut une expression non déterministe telle que RANDOM(). La propriété expression_name indique la fonction non déterministe qui empêche la maintenance incrémentielle.

Valeur

Description

STREAMING_SOURCE

refresh complètement parce que la définition de la vue matérialisée inclut une source de streaming, ce qui n'est pas pris en charge.

USER_DEFINED_FUNCTION

refresh complète car la vue matérialisée inclut une fonction définie par l'utilisateur non prise en charge. Seuls les UDF Python déterministes sont pris en charge. D'autres UDF pourraient empêcher les mises à jour incrémentielles.

TIME_FUNCTION

Fully refresh because the materialized view includes a time-based function such as CURRENT_DATE or CURRENT_TIMESTAMP. La propriété expression_name fournit le nom de la fonction non prise en charge.

NON_DETERMINISTIC_EXPRESSION

Fully refresh car la query inclut une expression non déterministe telle que RANDOM(). La propriété expression_name indique la fonction non déterministe qui empêche la maintenance incrémentielle.

Objet PlanNotIncrementalizableSubType

Une énumération des raisons pour lesquelles un plan de mise à jour pourrait ne pas être incrémentable.

Valeur

Description

OPERATOR_NOT_SUPPORTED

Fully refresh because the refresh plan includes an opérateur non pris en charge. La propriété operator_name fournit le nom de l'opérateur non pris en charge.

AGGREGATE_NOT_TOP_NODE

Fully refresh because an aggregate (GROUP BY) operator is not at the top level of the query plan. La maintenance incrémentielle prend en charge les agrégats uniquement au niveau supérieur. Envisagez de définir deux vues matérialisées pour séparer l’agrégation.

AGGREGATE_WITH_DISTINCT

refresh complète, car l'agrégation comprend une clause DISTINCT, ce qui n'est pas pris en charge pour les mises à jour incrémentielles.

AGGREGATE_WITH_UNSUPPORTED_EXPRESSION

Fully refresh car l'agrégation inclut des expressions non prises en charge. La propriété expression_name indique l’expression problématique.

SUBQUERY_EXPRESSION

refresh complète car la définition de la vue matérialisée inclut une expression de sous-query, qui n'est pas prise en charge.

WINDOW_FUNCTION_NOT_TOP_LEVEL

Fully refresh because a window function is not at the top level of the query plan.

WINDOW_FUNCTION_WITHOUT_PARTITION_BY

Fully refresh, car une fonction de fenêtre est définie sans clause PARTITION BY.

Valeur

Description

OPERATOR_NOT_SUPPORTED

Fully refresh because the refresh plan includes an opérateur non pris en charge. La propriété operator_name fournit le nom de l'opérateur non pris en charge.

AGGREGATE_NOT_TOP_NODE

Fully refresh because an aggregate (GROUP BY) operator is not at the top level of the query plan. La maintenance incrémentielle prend en charge les agrégats uniquement au niveau supérieur. Envisagez de définir deux vues matérialisées pour séparer l’agrégation.

AGGREGATE_WITH_DISTINCT

refresh complète, car l'agrégation comprend une clause DISTINCT, ce qui n'est pas pris en charge pour les mises à jour incrémentielles.

AGGREGATE_WITH_UNSUPPORTED_EXPRESSION

Fully refresh car l'agrégation inclut des expressions non prises en charge. La propriété expression_name indique l’expression problématique.

SUBQUERY_EXPRESSION

refresh complète car la définition de la vue matérialisée inclut une expression de sous-query, qui n'est pas prise en charge.

WINDOW_FUNCTION_NOT_TOP_LEVEL

Fully refresh because a window function is not at the top level of the query plan.

WINDOW_FUNCTION_WITHOUT_PARTITION_BY

Fully refresh, car une fonction de fenêtre est définie sans clause PARTITION BY.

Objet TableInformation

Représente les détails d'une table considérée lors d'un événement planning_information.

Champ

Description

table_name

Nom de la table utilisé dans la query de Unity Catalog ou du Hive metastore. Pourrait ne pas être disponible en cas d'accès basé sur le chemin.

table_id

Obligatoire. ID de table du journal Delta.

catalog_table_type

Type de la table tel que spécifié dans le catalogue.

partition_columns

Colonnes de partition de la table.

table_change_type

Modifiez le type dans le tableau. Un de ces éléments : TABLE_CHANGE_TYPE_UNKNOWN, TABLE_CHANGE_TYPE_APPEND_ONLY, TABLE_CHANGE_TYPE_GENERAL_CHANGE.

full_size

La taille totale de la table en nombre d'octets.

change_size

Taille des lignes modifiées dans les fichiers modifiés. Il est calculé à l’aide de change_file_read_size * num_changed_rows / num_rows_in_changed_files.

num_changed_partitions

Nombre de partitions modifiées.

is_size_after_pruning

Si full_size et change_size représentent des données après l’élagage de fichiers statiques.

is_row_id_enabled

Si l'ID de ligne est activé sur la table.

is_cdf_enabled

Indique si le CDF est activé sur la table.

is_deletion_vector_enabled

Si le vecteur de suppression est activé sur la table.

is_change_from_legacy_cdf

Que la modification de la table provienne de CDF hérité ou de CDF basé sur l'ID de ligne.

Champ

Description

table_name

Nom de la table utilisé dans la query de Unity Catalog ou du Hive metastore. Pourrait ne pas être disponible en cas d'accès basé sur le chemin.

table_id

Obligatoire. ID de table du journal Delta.

catalog_table_type

Type de la table tel que spécifié dans le catalogue.

partition_columns

Colonnes de partition de la table.

table_change_type

Modifiez le type dans le tableau. Un de ces éléments : TABLE_CHANGE_TYPE_UNKNOWN, TABLE_CHANGE_TYPE_APPEND_ONLY, TABLE_CHANGE_TYPE_GENERAL_CHANGE.

full_size

La taille totale de la table en nombre d'octets.

change_size

Taille des lignes modifiées dans les fichiers modifiés. Il est calculé à l’aide de change_file_read_size * num_changed_rows / num_rows_in_changed_files.

num_changed_partitions

Nombre de partitions modifiées.

is_size_after_pruning

Si full_size et change_size représentent des données après l’élagage de fichiers statiques.

is_row_id_enabled

Si l'ID de ligne est activé sur la table.

is_cdf_enabled

Indique si le CDF est activé sur la table.

is_deletion_vector_enabled

Si le vecteur de suppression est activé sur la table.

is_change_from_legacy_cdf

Que la modification de la table provienne de CDF hérité ou de CDF basé sur l'ID de ligne.

Objet TaskSlotMetrics

Les métriques d'emplacement de tâche pour un cluster. S'applique uniquement aux mises à jour de pipeline s'exécutant sur un compute classique.

Champ

Description

summary_duration_ms

La durée en millisecondes sur laquelle les métriques agrégées (par exemple, avg_num_task_slots) sont calculées.

num_task_slots

Le nombre d'emplacements de tâches Spark à l'instant du rapport.

avg_num_task_slots

Le nombre moyen d'emplacements de tâche Spark sur la durée récapitulative.

avg_task_slot_utilization

L'utilisation moyenne des emplacements de tâche (nombre de tâches actives divisé par le nombre d'emplacements de tâche) sur la durée du résumé.

num_executors

Le nombre d'exécuteurs Spark à l'instant de rapport.

avg_num_queued_tasks

La taille moyenne de la file d'attente des tâches (nombre total de tâches moins le nombre de tâches actives) sur la durée récapitulative.

Champ

Description

summary_duration_ms

La durée en millisecondes sur laquelle les métriques agrégées (par exemple, avg_num_task_slots) sont calculées.

num_task_slots

Le nombre d'emplacements de tâches Spark à l'instant du rapport.

avg_num_task_slots

Le nombre moyen d'emplacements de tâche Spark sur la durée récapitulative.

avg_task_slot_utilization

L'utilisation moyenne des emplacements de tâche (nombre de tâches actives divisé par le nombre d'emplacements de tâche) sur la durée du résumé.

num_executors

Le nombre d'exécuteurs Spark à l'instant de rapport.

avg_num_queued_tasks

La taille moyenne de la file d'attente des tâches (nombre total de tâches moins le nombre de tâches actives) sur la durée récapitulative.

Objet d'informations techniques

Informations sur la méthodologie de refresh pour un événement de planification.

Champ

Description

maintenance_type

Type de maintenance lié à cette information.

Si le type n'est pas MAINTENANCE_TYPE_COMPLETE_RECOMPUTE ou MAINTENANCE_TYPE_NO_OP, le flux est actualisé de manière incrémentielle.

Pour plus de détails, consultez MaintenanceType object.

is_chosen

Vrai pour la technique qui a été choisie pour le refresh.

is_applicable

Si le type de maintenance est applicable.

incrementalization_issues

Problèmes d'incrémentalisation qui pourraient entraîner un refresh complet d'une mise à jour. Pour plus de détails, consultez l'objet IncrementalizationIssue.

change_set_information

Informations sur l’ensemble de modifications final produit. Les valeurs sont l'une des suivantes :

  • CHANGE_SET_TYPE_APPEND_ONLY
  • CHANGE_SET_TYPE_GENERAL_ROW_CHANGE

Champ

Description

maintenance_type

Type de maintenance lié à cette information.

Si le type n'est pas MAINTENANCE_TYPE_COMPLETE_RECOMPUTE ou MAINTENANCE_TYPE_NO_OP, le flux est actualisé de manière incrémentielle.

Pour plus de détails, consultez MaintenanceType object.

is_chosen

Vrai pour la technique qui a été choisie pour le refresh.

is_applicable

Si le type de maintenance est applicable.

incrementalization_issues

Problèmes d'incrémentalisation qui pourraient entraîner un refresh complet d'une mise à jour. Pour plus de détails, consultez l'objet IncrementalizationIssue.

change_set_information

Informations sur l’ensemble de modifications final produit. Les valeurs sont l'une des suivantes :

  • CHANGE_SET_TYPE_APPEND_ONLY
  • CHANGE_SET_TYPE_GENERAL_ROW_CHANGE