Déterminer les informations sur le partage d’événements dans le compte consommateur

Cette rubrique décrit comment un fournisseur peut configurer une application pour déterminer si un consommateur a activé le partage d’événements dans son compte.

Vérifier les définitions d’événements à l’aide des fonctions système

Pour déterminer si le partage d’événements est activé dans un compte de consommateur, les fournisseurs peuvent appeler les fonctions système suivantes dans le script d’installation :

  • SYSTEM$IS_APPLICATION_AUTHORIZED_FOR_TELEMETRY_EVENT_SHARING()

    Renvoie TRUE si la propriété AUTHORIZE_TELEMETRY_EVENT_SHARING est définie, ce qui indique que le partage d’événements est autorisé dans le compte consommateur. Sinon, cette fonction système renvoie FALSE.

  • SYSTEM$IS_APPLICATION_ALL_MANDATORY_TELEMETRY_EVENT_DEFINITIONS_ENABLED()

    Renvoie TRUE si toutes les définitions d’événements requises ont été activées dans le compte consommateur. Sinon, cette fonction système renvoie FALSE.

L’exemple suivant montre une procédure stockée qui effectue un calcul uniquement si IS_APPLICATION_AUTHORIZED_FOR_TELEMETRY_EVENT_SHARING et IS_APPLICATION_ALL_MANDATORY_TELEMETRY_EVENT_DEFINITIONS_ENABLED sont réglées sur TRUE.

CREATE OR ALTER VERSIONED SCHEMA app_schema;
CREATE OR REPLACE PROCEDURE app_schema.sum(num1 float, num2 float)
RETURNS STRING
LANGUAGE SQL
EXECUTE AS OWNER
AS $$
    BEGIN
      IF (SYSTEM$IS_APPLICATION_AUTHORIZED_FOR_TELEMETRY_EVENT_SHARING() and SYSTEM$IS_APPLICATION_ALL_MANDATORY_TELEMETRY_EVENT_DEFINITIONS_ENABLED()) THEN
        RETURN num1 + num2;
      ELSE
        -- notify consumers that they need to enable event sharing
        RETURN 'Sorry you can\'t access the API, please enable event sharing.';
      END IF;
    END;
$$;
Copy

Vérifier les définitions d’événements à l’aide du SDK Permissions

Python Permission SDK propose les fonctions suivantes pour déterminer si le partage d’événements est activé sur le compte d’un consommateur :

  • is_application_authorized_for_telemetry_event_sharing()

    Renvoie true si la propriété AUTHORIZE_TELEMETRY_EVENT_SHARING est true. Renvoie false, sinon.

  • is_application_all_mandatory_telemetry_event_definitions_enabled()

    Renvoie true si toutes les définitions d’événements requises ont été activées dans le compte consommateur.

L’exemple suivant montre comment utiliser les fonctions is_application_authorized_for_telemetry_event_sharing() et is_application_all_mandatory_telemetry_event_definitions_enabled() du Python Permission SDK pour vérifier que le partage d’événements est activé dans le compte consommateur et que les événements obligatoires ont été activés.

import streamlit as st
import snowflake.permissions as permissions

def critical_feature_that_requires_event_sharing():
  st.write("critical_feature_that_requires_event_sharing")

def main():
  if permissions.is_application_authorized_for_telemetry_event_sharing() and permissions.is_application_all_mandatory_telemetry_event_definitions_enabled():
     critical_feature_that_requires_event_sharing()
  else:
     permissions.request_event_sharing()

if __name__ == "__main__":
  main()
Copy