Configurare l'importazione della derivazione dei dati per un servizio

Puoi attivare o disattivare selettivamente l'importazione della derivazione per integrazioni specifiche a livello di progetto, cartella o organizzazione.

Per saperne di più sulle integrazioni e sugli scenari di configurazione supportati, consulta Controlla l'importazione della derivazione dei dati.

Prerequisiti

Per controllare l'importazione della derivazione, devi utilizzare l'API Data Lineage. Assicurati di aver configurato un progetto client per la fatturazione e la quota, perché l'API Data Lineage è un'API basata su client.

Ruoli e autorizzazioni

Per ottenere le autorizzazioni necessarie per configurare e controllare l'importazione della derivazione dei dati, chiedi all'amministratore di concederti i seguenti ruoli IAM (Identity and Access Management):

Per ottenere le autorizzazioni necessarie per configurare e controllare l'importazione della derivazione dei dati, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per configurare e controllare l'importazione della derivazione dei dati. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per configurare e controllare l'importazione della derivazione dei dati sono necessarie le seguenti autorizzazioni:

  • Recupera e aggiorna le configurazioni di derivazione:
    • datalineage.configs.get
    • datalineage.configs.update

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

  1. Abilita l'API datalineage.googleapis.com nel progetto client. Per saperne di più, consulta Abilita la derivazione dei dati.

  2. Imposta il progetto client. Per i seguenti esempi, utilizza l'intestazione X-Goog-User-Project. Per saperne di più, consulta Parametri di sistema.

Ottieni la configurazione attuale

Per verificare se l'importazione della derivazione è abilitata per una risorsa o per ottenere il valore etag prima di modificare la configurazione, recupera la configurazione attuale.

C#

C#

Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida di Knowledge Catalog per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Knowledge Catalog C#.

Per eseguire l'autenticazione in Knowledge Catalog, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

using Google.Cloud.DataCatalog.Lineage.ConfigManagement.V1;

public sealed partial class GeneratedConfigManagementServiceClientSnippets
{
    /// <summary>Snippet for GetConfig</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void GetConfigRequestObject()
    {
        // Create client
        ConfigManagementServiceClient configManagementServiceClient = ConfigManagementServiceClient.Create();
        // Initialize request argument(s)
        GetConfigRequest request = new GetConfigRequest
        {
            ConfigName = ConfigName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
        };
        // Make the request
        Config response = configManagementServiceClient.GetConfig(request);
    }
}

Vai

Go

Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di Knowledge Catalog per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Knowledge Catalog Go.

Per eseguire l'autenticazione in Knowledge Catalog, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.


//go:build examples

package main

import (
	"context"

	configmanagement "cloud.google.com/go/datacatalog/lineage/configmanagement/apiv1"
	configmanagementpb "cloud.google.com/go/datacatalog/lineage/configmanagement/apiv1/configmanagementpb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := configmanagement.NewClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &configmanagementpb.GetConfigRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/datacatalog/lineage/configmanagement/apiv1/configmanagementpb#GetConfigRequest.
	}
	resp, err := c.GetConfig(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Knowledge Catalog per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Knowledge Catalog Java.

Per eseguire l'autenticazione in Knowledge Catalog, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.ConfigManagementServiceClient;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.ConfigName;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.GetConfigRequest;

public class SyncGetConfig {

  public static void main(String[] args) throws Exception {
    syncGetConfig();
  }

  public static void syncGetConfig() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (ConfigManagementServiceClient configManagementServiceClient =
        ConfigManagementServiceClient.create()) {
      GetConfigRequest request =
          GetConfigRequest.newBuilder()
              .setName(ConfigName.ofProjectLocationName("[PROJECT]", "[LOCATION]").toString())
              .build();
      Config response = configManagementServiceClient.getConfig(request);
    }
  }
}

Python

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di Knowledge Catalog per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Knowledge Catalog Python.

Per eseguire l'autenticazione in Knowledge Catalog, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

# This snippet has been automatically generated and should be regarded as a
# code template only.
# It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
#   client as shown in:
#   https://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import datacatalog_lineage_configmanagement_v1


def sample_get_config():
    # Create a client
    client = datacatalog_lineage_configmanagement_v1.ConfigManagementServiceClient()

    # Initialize request argument(s)
    request = datacatalog_lineage_configmanagement_v1.GetConfigRequest(
        name="name_value",
    )

    # Make the request
    response = client.get_config(request=request)

    # Handle the response
    print(response)

gcloud

Per visualizzare la configurazione attuale della derivazione, utilizza il comando gcloud datalineage config describe. Puoi recuperare la configurazione di un progetto, una cartella o un'organizzazione.

L'esempio seguente mostra come ottenere la configurazione per il progetto corrente:

gcloud datalineage config describe

Ad esempio, per ottenere la configurazione di un progetto specifico, utilizza il flag --project:

gcloud datalineage config describe --project=PROJECT_ID

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto di cui vuoi visualizzare la configurazione.

Per visualizzare la configurazione attuale di importazione della derivazione di un servizio per una cartella o un'organizzazione, sostituisci --project=PROJECT_ID con uno dei seguenti valori:

  • --folder=FOLDER_ID se vuoi visualizzare le impostazioni di importazione dati per una cartella.
  • --organization=ORGANIZATION_ID se vuoi visualizzare le impostazioni di importazione dati per un'organizzazione.

REST

Per visualizzare la configurazione di derivazione attuale, utilizza il metodo projects.locations.config.get. Puoi recuperare la configurazione per un progetto, una cartella o un'organizzazione.

L'esempio seguente mostra come ottenere la configurazione di un progetto:

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • CLIENT_PROJECT_ID: l'ID del progetto client utilizzato per la fatturazione o le quote.
  • PROJECT_ID: l'ID del progetto di cui vuoi visualizzare la configurazione.

Metodo HTTP e URL:

GET https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/global/config

Per inviare la richiesta, espandi una di queste opzioni:

Il comando restituisce uno dei seguenti output:

  • Se non fornisci impostazioni di importazione della derivazione, l'output contiene un oggetto ingestion vuoto:
    {
      "name": "projects/123456789012/locations/global/config",
      "ingestion": {}
    }
      

    Ciò significa che il servizio utilizza l'impostazione di importazione della derivazione predefinita. In questo esempio, l'impostazione di importazione della derivazione per Managed Service for Apache Spark è enabled.

  • Se abiliti esplicitamente l'importazione della derivazione, ottieni il seguente output:
    {
      "name": "projects/123456789012/locations/global/config",
      "ingestion": {
        "rules": [
          {
            "integrationSelector": {
              "integration": "DATAPROC"
            },
            "lineageEnablement": {
              "enabled": true
            }
          }
        ]
      },
      "etag": "1a2b3c4d5e"
    }
      
  • Se l'importazione della derivazione è disabilitata, viene visualizzato il seguente output:
    {
      "name": "projects/123456789012/locations/global/config",
      "ingestion": {
        "rules": [
          {
            "integrationSelector": {
              "integration": "DATAPROC"
            },
            "lineageEnablement": {
              "enabled": false
            }
          }
        ]
      },
      "etag": "1a2b3c4d5e"
    }
      

Per ottenere la configurazione di una cartella o di un'organizzazione, sostituisci projects/PROJECT_ID con folders/FOLDER_ID o organizations/ORGANIZATION_ID.

Il campo etag nella risposta è un checksum generato dal server in base al valore attuale della configurazione. Quando aggiorni una configurazione utilizzando il metodo patch, puoi includere nel corpo della richiesta il valore etag restituito da una richiesta get recente. Se fornisci etag, Knowledge Catalog lo utilizza per verificare che la configurazione non sia cambiata dall'ultima richiesta di lettura. Se non c'è corrispondenza, la richiesta di aggiornamento non va a buon fine. In questo modo eviti di sovrascrivere involontariamente le configurazioni effettuate da altri utenti in scenari di lettura-modifica-scrittura. Se non fornisci un etag nella richiesta patch, Knowledge Catalog sovrascrive la configurazione incondizionatamente.

Disabilita l'importazione della derivazione per un servizio

Per gestire i costi, applicare policy di governance dei dati o escludere progetti di sviluppo e altri workload che non traggono vantaggio dal monitoraggio della derivazione, disattiva l'importazione della derivazione per un servizio.

Java

package com.google.cloud.datacatalog.lineage.configmanagement.v1.samples;

import com.google.api.gax.rpc.NotFoundException;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion.IngestionRule;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion.IngestionRule.IntegrationSelector;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion.IngestionRule.IntegrationSelector.Integration;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion.IngestionRule.LineageEnablement;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.ConfigManagementServiceClient;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.ConfigName;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.GetConfigRequest;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.UpdateConfigRequest;

public class DisableLineageIngestion {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String location = "global";
    disableLineageIngestion(projectId, location);
  }

  // Disables lineage ingestion for a specific service
  // (Managed Service for Apache Spark).
  public static void disableLineageIngestion(String projectId, String location) throws Exception {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (ConfigManagementServiceClient client = ConfigManagementServiceClient.create()) {
      // Format the resource name.
      String name = ConfigName.ofProjectLocationName(projectId, location).toString();

      Config.Builder configBuilder = Config.newBuilder().setName(name);

      // It is a best practice to read the existing config to preserve other rules
      // and use the etag for optimistic concurrency control.
      try {
        GetConfigRequest getRequest = GetConfigRequest.newBuilder().setName(name).build();
        Config existingConfig = client.getConfig(getRequest);
        configBuilder.mergeFrom(existingConfig);
      } catch (NotFoundException e) {
        // If config doesn't exist, we will proceed by creating a new one.
      }

      // Create an integration selector for the service you want to disable.
      IntegrationSelector selector =
          IntegrationSelector.newBuilder().setIntegration(Integration.DATAPROC).build();

      // Set lineage enablement to false to disable tracking.
      LineageEnablement enablement = LineageEnablement.newBuilder().setEnabled(false).build();

      // Build the ingestion rule.
      IngestionRule disableRule =
          IngestionRule.newBuilder()
              .setIntegrationSelector(selector)
              .setLineageEnablement(enablement)
              .build();

      // Preserve existing rules except for the one we are modifying, then add the new rule.
      // We clear the ingestion block out of the configBuilder entirely to reconstruct it.
      Ingestion.Builder ingestionBuilder = Ingestion.newBuilder();
      if (configBuilder.hasIngestion()) {
        for (IngestionRule rule : configBuilder.getIngestion().getRulesList()) {
          // Keep all existing rules EXCEPT the one targeting DATAPROC
          if (rule.getIntegrationSelector().getIntegration() != Integration.DATAPROC) {
            ingestionBuilder.addRules(rule);
          }
        }
      }
      ingestionBuilder.addRules(disableRule);

      // Update the config builder with the reconstructed ingestion settings.
      configBuilder.setIngestion(ingestionBuilder.build());

      // Build the update request.
      UpdateConfigRequest request = UpdateConfigRequest.newBuilder()
          .setConfig(configBuilder.build())
          .build();

      // Update the config.
      Config response = client.updateConfig(request);
      System.out.printf("Successfully updated config: %s\n", response.getName());
    }
  }
}

Python

from google.api_core.exceptions import NotFound
from google.cloud.datacatalog.lineage import configmanagement_v1

def disable_lineage_ingestion(project_id: str, location: str = "global") -> configmanagement_v1.Config:
    """Disables lineage ingestion for a specific service.

    Args:
        project_id: The ID of your Google Cloud project.
        location: The region location, usually 'global'.

    Returns:
        The updated Configuration object.
    """
    # Initialize client that will be used to send requests.
    client = configmanagement_v1.ConfigManagementServiceClient()

    # The config name format
    name = f"projects/{project_id}/locations/{location}/config"

    try:
        # Retrieve the existing config to preserve other configurations and
        # obtain the latest etag for optimistic concurrency control.
        config = client.get_config(name=name)

        # Filter out existing rules for the integration we are updating
        new_rules = [
            rule for rule in config.ingestion.rules
            if rule.integration_selector.integration != configmanagement_v1.Config.Ingestion.IngestionRule.IntegrationSelector.Integration.DATAPROC
        ]
    except NotFound:
        # If the config does not exist, start fresh
        config = configmanagement_v1.Config(name=name)
        new_rules = []

    # Define the integration to disable tracking for (e.g., DATAPROC).
    integration_selector = configmanagement_v1.Config.Ingestion.IngestionRule.IntegrationSelector(
        integration=configmanagement_v1.Config.Ingestion.IngestionRule.IntegrationSelector.Integration.DATAPROC
    )

    # Set lineage enablement to False to disable tracking.
    lineage_enablement = configmanagement_v1.Config.Ingestion.IngestionRule.LineageEnablement(
        enabled=False
    )

    # Create the ingestion rule.
    disable_rule = configmanagement_v1.Config.Ingestion.IngestionRule(
        integration_selector=integration_selector,
        lineage_enablement=lineage_enablement,
    )
     # Append the new disabling rule and assign it back to the config ingestion rules
    new_rules.append(disable_rule)
    config.ingestion = configmanagement_v1.Config.Ingestion(rules=new_rules)

    # Create the update request using the config (which includes the etag if it existed).
    request = configmanagement_v1.UpdateConfigRequest(
        config=config,
    )

    # Make the request to update the config
    response = client.update_config(request=request)

    print(f"Successfully updated config: {response.name}")
    return response

gcloud

Per disattivare l'importazione della derivazione per un servizio specifico, utilizza il comando gcloud datalineage config update con una stringa JSON in linea o un percorso a un file JSON che imposta lineageEnablement.enabled su false per il integration specifico.

L'esempio seguente mostra come disattivare l'importazione della derivazione di un servizio per un progetto utilizzando una stringa JSON incorporata:

gcloud datalineage config update --project=PROJECT_ID \
  --config='{
    "ingestion": {
      "rules": [
        {
          "integrationSelector": {
            "integration": "INTEGRATION"
          },
          "lineageEnablement": {
            "enabled": false
          }
        }
      ]
    },
    "etag": "ETAG"
  }'

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto di cui vuoi aggiornare la configurazione.
  • INTEGRATION: l'integrazione per cui hai impostato la configurazione. Ad esempio: DATAPROC o BIGQUERY.
  • ETAG: il valore etag restituito da una richiesta get recente nel corpo della richiesta, utilizzato per verificare che la configurazione non sia cambiata dall'ultima richiesta di lettura.

Per aggiornare la configurazione utilizzando un file JSON, esegui:

gcloud datalineage config update --project=PROJECT_ID --config=CONFIG_FILE

Sostituisci quanto segue:

  • CONFIG_FILE: il percorso del file JSON contenente la configurazione.

Per disattivare l'importazione della derivazione di un servizio per una cartella o un'organizzazione, sostituisci --project=PROJECT_ID con uno dei seguenti valori:

  • --folder=FOLDER_ID se vuoi aggiornare le impostazioni di importazione dati per una cartella.
  • --organization=ORGANIZATION_ID se vuoi aggiornare le impostazioni di importazione dati per un'organizzazione.

REST

Per disattivare l'importazione della derivazione per un servizio specifico, utilizza il metodo projects.locations.config.patch con una regola di importazione che imposta lineageEnablement.enabled su false per il integration specifico.

Per evitare di sovrascrivere involontariamente le configurazioni effettuate da altri utenti in scenari di lettura-modifica-scrittura, puoi includere il campo etag nel corpo della richiesta. Per saperne di più, consulta Recupera la configurazione attuale.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • CLIENT_PROJECT_ID: l'ID del progetto client utilizzato per la fatturazione o le quote.
  • PROJECT_ID: l'ID del progetto di cui vuoi aggiornare la configurazione.
  • ETAG: il valore etag restituito da una richiesta get recente.
  • INTEGRATION: il integration per cui hai impostato la configurazione. Ad esempio: DATAPROC.

Metodo HTTP e URL:

PATCH https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/global/config

Corpo JSON della richiesta:

{
  "ingestion": {
    "rules": [
      {
        "integrationSelector": {
          "integration": "INTEGRATION"
        },
        "lineageEnablement": {
          "enabled": false
        }
      }
    ]
  },
  "etag": "ETAG"
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/global/config",
  "ingestion": {
    "rules": [
      {
        "integrationSelector": {
          "integration": "INTEGRATION"
        },
        "lineageEnablement": {
          "enabled": false
        }
      }
    ]
  },
  "etag": "1a2b3c4d5e"
}

Per disabilitare l'importazione della derivazione per una cartella o un'organizzazione, sostituisci projects/PROJECT_ID con folders/FOLDER_ID o organizations/ORGANIZATION_ID.

Abilita l'importazione della derivazione per un servizio

Per riprendere il monitoraggio dopo averlo disattivato o per abilitare un'integrazione disabilitata per impostazione predefinita, abilita l'importazione della derivazione per un servizio.

Java

package com.google.cloud.datacatalog.lineage.configmanagement.v1.samples;

import com.google.api.gax.rpc.NotFoundException;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion.IngestionRule;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion.IngestionRule.IntegrationSelector;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion.IngestionRule.IntegrationSelector.Integration;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.Config.Ingestion.IngestionRule.LineageEnablement;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.ConfigManagementServiceClient;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.ConfigName;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.GetConfigRequest;
import com.google.cloud.datacatalog.lineage.configmanagement.v1.UpdateConfigRequest;

public class EnableLineageIngestion {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String location = "global";
    enableLineageIngestion(projectId, location);
  }

  // Enables lineage ingestion for a specific service
  // (Managed Service for Apache Spark).
  public static void enableLineageIngestion(String projectId, String location) throws Exception {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (ConfigManagementServiceClient client = ConfigManagementServiceClient.create()) {
      // Format the resource name.
      String name = ConfigName.ofProjectLocationName(projectId, location).toString();

      Config.Builder configBuilder = Config.newBuilder().setName(name);

      // It is a best practice to read the existing config to preserve other rules
      // and use the etag for optimistic concurrency control.
      try {
        GetConfigRequest getRequest = GetConfigRequest.newBuilder().setName(name).build();
        Config existingConfig = client.getConfig(getRequest);
        configBuilder.mergeFrom(existingConfig);
      } catch (NotFoundException e) {
        // If config doesn't exist, we will proceed by creating a new one.
      }

      // Create an integration selector for the service you want to enable (e.g., DATAPROC).
      IntegrationSelector selector =
          IntegrationSelector.newBuilder().setIntegration(Integration.DATAPROC).build();

      // Set lineage enablement to true to enable tracking.
      LineageEnablement enablement = LineageEnablement.newBuilder().setEnabled(true).build();

      // Build the ingestion rule.
      IngestionRule enableRule =
          IngestionRule.newBuilder()
              .setIntegrationSelector(selector)
              .setLineageEnablement(enablement)
              .build();

      // Preserve existing rules except for the one we are modifying, then add the new rule.
      // We clear the ingestion block out of the configBuilder entirely to reconstruct it.
      Ingestion.Builder ingestionBuilder = Ingestion.newBuilder();
      if (configBuilder.hasIngestion()) {
        for (IngestionRule rule : configBuilder.getIngestion().getRulesList()) {
          // Keep all existing rules EXCEPT the one targeting DATAPROC
          if (rule.getIntegrationSelector().getIntegration() != Integration.DATAPROC) {
            ingestionBuilder.addRules(rule);
          }
        }
      }
      ingestionBuilder.addRules(enableRule);

      // Update the config builder with the reconstructed ingestion settings.
      configBuilder.setIngestion(ingestionBuilder.build());

      // Build the update request.
      UpdateConfigRequest request = UpdateConfigRequest.newBuilder()
          .setConfig(configBuilder.build())
          .build();

      // Update the config.
      Config response = client.updateConfig(request);
      System.out.printf("Successfully updated config: %s\n", response.getName());
    }
  }
}

Python

from google.api_core.exceptions import NotFound
from google.cloud.datacatalog.lineage import configmanagement_v1

def enable_lineage_ingestion(project_id: str, location: str = "global") -> configmanagement_v1.Config:
    """Enables lineage ingestion for a specific service like Dataproc
    (Managed Service for Apache Spark).

    Args:
        project_id: The ID of your Google Cloud project.
        location: The region location, usually 'global'.

    Returns:
        The updated Configuration object.
    """
    # Initialize client that will be used to send requests.
    client = configmanagement_v1.ConfigManagementServiceClient()

    # The config name format
    name = f"projects/{project_id}/locations/{location}/config"

    try:
        # Retrieve the existing config to preserve other configurations and
        # obtain the latest etag for optimistic concurrency control.
        config = client.get_config(name=name)

        # Filter out existing rules for the integration we are updating
        new_rules = [
            rule for rule in config.ingestion.rules
            if rule.integration_selector.integration != configmanagement_v1.Config.Ingestion.IngestionRule.IntegrationSelector.Integration.DATAPROC
        ]
    except NotFound:
        # If the config does not exist, start fresh
        config = configmanagement_v1.Config(name=name)
        new_rules = []

    # Define the integration to enable tracking for (e.g., DATAPROC).
    integration_selector = configmanagement_v1.Config.Ingestion.IngestionRule.IntegrationSelector(
        integration=configmanagement_v1.Config.Ingestion.IngestionRule.IntegrationSelector.Integration.DATAPROC
    )

    # Set lineage enablement to True to enable tracking.
    lineage_enablement = configmanagement_v1.Config.Ingestion.IngestionRule.LineageEnablement(
        enabled=True
    )

    # Create the ingestion rule.
    enable_rule = configmanagement_v1.Config.Ingestion.IngestionRule(
        integration_selector=integration_selector,
        lineage_enablement=lineage_enablement,
    )

    # Append the new enabling rule and assign it back to the config ingestion rules
    new_rules.append(enable_rule)
    config.ingestion = configmanagement_v1.Config.Ingestion(rules=new_rules)

    # Create the update request using the config (which includes the etag if it existed).
    request = configmanagement_v1.UpdateConfigRequest(
        config=config,
    )

    # Make the request to update the config
    response = client.update_config(request=request)

    print(f"Successfully updated config: {response.name}")
    return response

gcloud

Per abilitare l'importazione della derivazione per un servizio specifico, utilizza il comando gcloud datalineage config update con una stringa JSON incorporata o un percorso a un file JSON che imposta lineageEnablement.enabled su true per il integration specifico. Le integrazioni attuali includono Managed Service for Apache Spark, BigQuery e Managed Airflow.

L'esempio seguente mostra come attivare l'importazione della derivazione di un servizio per un progetto utilizzando una stringa JSON incorporata:

gcloud datalineage config update --project=PROJECT_ID \
  --config='{
    "ingestion": {
      "rules": [
        {
          "integrationSelector": {
            "integration": "INTEGRATION"
          },
          "lineageEnablement": {
            "enabled": true
          }
        }
      ]
    },
    "etag": "ETAG"
  }'

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto di cui vuoi aggiornare la configurazione.
  • INTEGRATION: l'integrazione per cui imposti la configurazione (ad esempio DATAPROC o BIGQUERY).
  • ETAG: il valore etag restituito da una richiesta get recente nel corpo della richiesta, utilizzato per verificare che la configurazione non sia cambiata dall'ultima richiesta di lettura.

Per aggiornare la configurazione utilizzando un file JSON, esegui:

gcloud datalineage config update --project=PROJECT_ID --config=CONFIG_FILE

Sostituisci quanto segue:

  • CONFIG_FILE: il percorso del file JSON contenente la configurazione.

Per abilitare l'importazione della derivazione di un servizio per una cartella o un'organizzazione, sostituisci --project=PROJECT_ID con uno dei seguenti valori:

  • --folder=FOLDER_ID se vuoi aggiornare le impostazioni di importazione dati per una cartella.
  • --organization=ORGANIZATION_ID se vuoi aggiornare le impostazioni di importazione dati per un'organizzazione.

REST

Per attivare l'importazione della derivazione per un servizio specifico, utilizza il metodo projects.locations.config.patch con una regola di importazione che imposta lineageEnablement.enabled su true per il integration specifico.

Per evitare di sovrascrivere involontariamente le configurazioni effettuate da altri utenti in scenari di lettura-modifica-scrittura, puoi includere il campo etag nel corpo della richiesta. Per saperne di più, consulta Recupera la configurazione attuale.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • CLIENT_PROJECT_ID: l'ID del progetto client utilizzato per la fatturazione o le quote.
  • PROJECT_ID: l'ID del progetto di cui vuoi aggiornare la configurazione.
  • ETAG: il valore etag restituito da una richiesta get recente.
  • INTEGRATION: il integration per cui hai impostato la configurazione. Ad esempio: DATAPROC.

Metodo HTTP e URL:

PATCH https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/global/config

Corpo JSON della richiesta:

{
  "ingestion": {
    "rules": [
      {
        "integrationSelector": {
          "integration": "INTEGRATION"
        },
        "lineageEnablement": {
          "enabled": true
        }
      }
    ]
  },
  "etag": "ETAG"
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/global/config",
  "ingestion": {
    "rules": [
      {
        "integrationSelector": {
          "integration": "INTEGRATION"
        },
        "lineageEnablement": {
          "enabled": true
        }
      }
    ]
  },
  "etag": "1a2b3c4d5e"
}

Per abilitare l'importazione della derivazione di un servizio per una cartella o un'organizzazione, sostituisci projects/PROJECT_ID con folders/FOLDER_ID o organizations/ORGANIZATION_ID.

Configura l'importazione della derivazione per diversi servizi

Per configurare l'importazione della derivazione per più integrazioni contemporaneamente, utilizza i metodi projects.locations.config.patch, folders.locations.config.patch o organizations.locations.config.patch. Puoi aggiornare la configurazione a livello di progetto, cartella o organizzazione definendo più regole nel corpo della richiesta. Per saperne di più, consulta Come funziona la configurazione dell'importazione dati per le integrazioni multi-servizio.

Livello di organizzazione

Configura l'organizzazione in modo da abilitare l'importazione della derivazione per Managed Service for Apache Spark:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "X-Goog-User-Project: CLIENT_PROJECT_ID" \
  "https://datalineage.googleapis.com/v1/organizations/ORGANIZATION_ID/locations/global/config" \
  -d '{
    "ingestion": {
      "rules": [
        {
          "integrationSelector": {
            "integration": "DATAPROC"
          },
          "lineageEnablement": {
            "enabled": true
          }
        }
      ]
    },
    "etag": "ORGANIZATION_CONFIG_ETAG"
  }'

Sostituisci quanto segue:

  • ORGANIZATION_ID: l'ID dell'organizzazione di cui vuoi aggiornare la configurazione.
  • CLIENT_PROJECT_ID: l'ID del progetto client utilizzato per la fatturazione o le quote.
  • ORGANIZATION_CONFIG_ETAG: il valore etag restituito da una richiesta get recente per la configurazione dell'organizzazione.

Livello di cartella

Configura la cartella per abilitare l'importazione della derivazione per BigQuery:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "X-Goog-User-Project: CLIENT_PROJECT_ID" \
  "https://datalineage.googleapis.com/v1/folders/FOLDER_ID/locations/global/config" \
  -d '{
    "ingestion": {
      "rules": [
        {
          "integrationSelector": {
            "integration": "BIGQUERY"
          },
          "lineageEnablement": {
            "enabled": true
          }
        }
      ]
    },
    "etag": "FOLDER_CONFIG_ETAG"
  }'

Sostituisci quanto segue:

  • FOLDER_ID: l'ID della cartella di cui vuoi aggiornare la configurazione.
  • CLIENT_PROJECT_ID: l'ID del progetto client utilizzato per la fatturazione o le quote.
  • FOLDER_CONFIG_ETAG: il valore etag restituito da una richiesta get recente per la configurazione della cartella.

Livello progetto

Configura il progetto per disattivare l'importazione della derivazione per BigQuery e attivare contemporaneamente l'importazione della derivazione per Managed Service for Apache Airflow:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "X-Goog-User-Project: CLIENT_PROJECT_ID" \
  "https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/global/config" \
  -d '{
    "ingestion": {
      "rules": [
        {
          "integrationSelector": {
            "integration": "BIGQUERY"
          },
          "lineageEnablement": {
            "enabled": false
          }
        },
        {
          "integrationSelector": {
            "integration": "MANAGED_AIRFLOW"
          },
          "lineageEnablement": {
            "enabled": true
          }
        }
      ]
    },
    "etag": "PROJECT_CONFIG_ETAG"
  }'

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto di cui vuoi aggiornare la configurazione.
  • CLIENT_PROJECT_ID: l'ID del progetto client utilizzato per la fatturazione o le quote.
  • PROJECT_CONFIG_ETAG: il valore etag restituito da una richiesta get recente per la configurazione del progetto.

Passaggi successivi