Od danych pierwotnych do prognoz w kilka sekund dzięki agentom AI

1. Wprowadzenie

W tym module wcielisz się w rolę analityka danych w fikcyjnej firmie Froyo, która wprowadza na rynek nowy smak produktu o nazwie „Midnight Swirl”. Aby wprowadzenie produktu na rynek globalny zakończyło się sukcesem, firma musi odpowiedzieć na kluczowe pytania dotyczące składników, popytu na rynku i zwrotu z inwestycji (ROI). Ten kompleksowy przepływ pracy pokazuje, jak Katalog wiedzy Google Cloud (wcześniej Dataplex) i Lakehouse for Apache Iceberg (wcześniej BigLake) wypełniają lukę między „ciemnymi” danymi nieustrukturyzowanymi i dostarczają przydatne informacje biznesowe przy użyciu Gemini w IDE (VS Code) za pomocą ujednoliconej warstwy zarządzania.

Przepływ pracy prognozowania danych pierwotnych

Jakie zadania wykonasz

  • Odkrywanie danych nieuporządkowanych: skanowanie danych Knowledge Catalog przeszukuje przepisy w formacie PDF przechowywane w Cloud Storage. Utwórz w BigQuery tabele obiektów dla zeskanowanych plików PDF. Korzystając z Vertex AI Semantic Inference, system „odczytuje” pliki PDF, aby wyodrębnić strukturalne informacje o produktach, alergenach, składnikach i powiązanych atrybutach. Następnie inteligentnie generuje schemat danych przechowywanych w plikach PDF.
  • Ujednolicone metadane: wyodrębnione dane z plików PDF są przechowywane bezpośrednio w BigQuery jako natywna szeroka tabela, a widoki są tworzone w celu ułatwienia wykonywania typowych zapytań. Niezależny zbiór danych wejściowych zawierający historyczne dane o sprzedaży jest przechowywany w tabelach Apache Iceberg w Google Cloud Storage. Ta tabela Iceberg zostanie w kolejnym kroku połączona z wyodrębnionymi danymi w BigQuery.
  • Analiza w wielu silnikach: korzystając z usługi zarządzanej dla Apache Spark (wcześniej Dataproc) z katalogiem Iceberg REST, połączysz te nowe metadane PDF i wywnioskowane strukturalne dane semantyczne (z tabel i widoków BigQuery) ze strukturalnymi danymi o sprzedaży przechowywanymi w tabelach Apache Iceberg w Google Cloud Storage. Jest to regulowane przez szablon interaktywnej sesji zarządzanej Apache Spark używany jako jądro notatnika Jupyter, który zapewnia spójne ustawienia zabezpieczeń i obliczeń dla zadania Spark.
  • Informacje semantyczne: dzięki połączeniu wywnioskowanych danych o produktach z danymi o klientach i sprzedaży (w BigQuery) wersja demonstracyjna może wyodrębniać informacje, takie jak dane o alergenach i prognozy przychodów.
  • Autonomiczne zarządzanie: cały cykl życia – od skanowania wykrywającego po wykonywanie Sparka – jest koordynowany za pomocą szablonów, instrukcji, reguł i automatyzacji opartej na agentach, które są gotowe do użycia z Gemini. Udowadnia to, że AI może zarządzać infrastrukturą, która zasila analitykę.

Czego potrzebujesz

Wykonanie tego ćwiczenia może wiązać się z kosztami, które przy typowym wykorzystaniu szacuje się na mniej niż 5 USD. Aby uzyskać szczegółowe oszacowanie kosztów na podstawie przewidywanego wykorzystania lub aktualnych cen, skorzystaj z Kalkulatora cen Google Cloud.

Aby ukończyć ten kurs, musisz spełniać te wymagania wstępne.

2. Zanim zaczniesz

Tworzenie projektu Google Cloud

  1. W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt w chmurze Google.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.

Uruchamianie Cloud Shell

Cloud Shell to środowisko wiersza poleceń działające w Google Cloud, które zawiera niezbędne narzędzia.

  1. Kliknij Aktywuj Cloud Shell u góry konsoli Google Cloud.
  2. Po połączeniu z Cloud Shell sprawdź uwierzytelnianie:
    gcloud auth list
    
  3. Sprawdź, czy projekt jest skonfigurowany:
    gcloud config get project
    
  4. Jeśli projekt nie jest ustawiony zgodnie z oczekiwaniami, ustaw go:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

Włącz wymagane interfejsy API

Aby włączyć wszystkie wymagane interfejsy API, uruchom to polecenie:

  gcloud services enable \
    dataplex.googleapis.com \
    datacatalog.googleapis.com \
    discoveryengine.googleapis.com \
    bigqueryconnection.googleapis.com \
    bigquery.googleapis.com \
    biglake.googleapis.com \
    dataproc.googleapis.com \
    metastore.googleapis.com \
    dataform.googleapis.com \
    notebooks.googleapis.com \
    aiplatform.googleapis.com \
    cloudresourcemanager.googleapis.com \
    serviceusage.googleapis.com \
    secretmanager.googleapis.com \
    storage.googleapis.com

Pobieranie zasobów do ćwiczeń z programowania

To repozytorium zawiera pliki Parquet, przepisy, dostawców, copilot-instructions.md, template.yaml i quickstart.py, które można wykorzystać w tym laboratorium. Pobierz te pliki.

Aby pobrać pliki:

  1. W Cloud Shell uruchom to polecenie:
    git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/next-26-keynotes.git
    
  2. Otwórz nowo utworzony folder:
    cd next-26-keynotes
    
  3. Pobierz folder data-cloud-demo
    git sparse-checkout set genkey/data-cloud-demo
    
  4. Po zakończeniu płatności otwórz folder data-cloud-demo i wyodrębnij pliki ZIP, aby uzyskać dostęp do zasobów codelabu.

3. Konfigurowanie Lakehouse na potrzeby danych klientów Froyo

W tej sekcji utworzysz katalog w Lakehouse, aby używać metastore Lakehouse w swoich przepływach pracy. Zapewnia interoperacyjność między silnikami zapytań, oferując jedno źródło informacji o wszystkich danych Iceberg. Umożliwia silnikom zapytań, takim jak Apache Spark, wykrywanie, odczytywanie metadanych i zarządzanie tabelami Iceberg w spójny sposób.

Wymagane role

Sprawdź, czy masz te role Identity and Access Management (IAM):

  • roles/biglake.viewer
  • roles/bigquery.user
  • roles/bigquery.dataEditor
  • roles/biglake.editor
  • roles/biglake.metadataViewer
  • roles/bigquery.connectionUser
  • roles/storage.objectUser
  • roles/storage.objectViewer
  • roles/storage.objectCreator
  • roles/storage.admin

Więcej informacji o przyznawaniu ról uprawnień znajdziesz w artykule Przyznawanie roli uprawnień.

Tworzenie katalogu Lakehouse z zasobnikiem

Utwórz katalog Lakehouse, aby zarządzać metadanymi tabel Iceberg. Łączysz się z tym katalogiem w zadaniu Spark, aby tworzyć tabele Iceberg i wysyłać do nich zapytania.

  1. W konsoli Google Cloud wybierz Lakehouse.
  2. Kliknij Utwórz katalog. Otworzy się strona Tworzenie katalogu.
  3. Jako Typ katalogu wybierz Katalog Iceberg REST.
  4. W sekcji Wybierz opcje zasobnika katalogu Lakehouse kliknij Katalog z jednym zasobnikiem.
  5. W polu Domyślny zasobnik Cloud Storage katalogu kliknij Przeglądaj, a następnie Utwórz nowy zasobnik.
  6. Na stronie Utwórz zasobnik wykonaj te czynności:
  7. W sekcji Rozpocznij wpisz globalnie niepowtarzalną nazwę, która spełnia wymagania dotyczące nazwy zasobnika.
  8. W sekcji Wybierz, gdzie chcesz zapisywać dane wybierz Region jako Typ lokalizacji i wpisz swój region. Na przykład: us-west1.
  9. W sekcji Wybierz sposób kontrolowania dostępu do obiektów odznacz pole wyboru Wyegzekwuj blokadę dostępu publicznego do tego zasobnika.
    Pozwala to symulować rzeczywiste scenariusze, takie jak hostowanie publicznych treści internetowych lub repozytoriów udostępnionych danych. Bez tej zmiany zasobnik będzie egzekwować ścisłą zasadę „tylko prywatne”. Każda próba uzyskania dostępu do Twoich zasobów spowoduje błąd 403, nawet jeśli przyznasz plikom uprawnienia publiczne.
  10. Kliknij Dalej > Utwórz > Wybierz > Dalej.
  11. W sekcji Authentication method (Metoda uwierzytelniania) wybierz Credential vending mode (Tryb wystawiania tymczasowych danych uwierzytelniających).
  12. Kliknij Utwórz.Katalog zostanie utworzony i otworzy się strona Szczegóły katalogu.
  13. W sekcji Metoda uwierzytelniania kliknij Ustaw uprawnienia do zasobnika.
  14. W oknie dialogowym kliknij Potwierdź.Sprawdzisz w ten sposób, czy konto usługi katalogu ma w zasobniku pamięci rolę Storage Object User.
  15. Na stronie Szczegóły katalogu skopiuj ścieżkę identyfikatora URI katalogu REST. Użyj tej ścieżki podczas wykonywania zadania Uruchom zadanie Spark.

Prześlij pliki Parquet do zasobnika.

Aby przesłać pliki Parquet do katalogu głównego zasobnika:

  1. W konsoli Google Cloud otwórz stronę Zasobniki Cloud Storage.
  2. Na liście zasobników kliknij nazwę zasobnika. Na przykład: acai_demo.
  3. Na karcie Obiekty zasobnika kliknij Prześlij > Prześlij pliki.
  4. Wybierz pliki z folderu Parquet, który został sklonowany w sekcji Zanim zaczniesz tego laboratorium.
  5. Kliknij Otwórz.

4. Konfigurowanie sieci VPC

Utwórz sieć VPC i podsieć, które umożliwiają zasobom komunikowanie się z interfejsami API Google bez wychodzenia do publicznego internetu, oraz zaporę sieciową, która umożliwia swobodny przepływ ruchu wewnętrznego między węzłami przetwarzania danych.

  1. W konsoli Google Cloud otwórz stronę Sieci VPC.
  2. Kliknij Utwórz sieć VPC.
  3. Wpisz nazwę sieci. Na przykład: acai-network.
  4. Aby skonfigurować maksymalną jednostkę przesyłania (MTU) sieci, zaznacz pole wyboru Ustaw MTU automatycznie.
  5. W polu Tryb tworzenia podsieci wybierz Automatyczny.
  6. W sekcji Reguły zapory sieciowej zaznacz wszystkie pola wyboru Reguły zapory sieciowej IPv4.
  7. Kliknij Utwórz.

Włączanie prywatnego dostępu do Google

Węzły Dataproc Serverless nie mają publicznych adresów IP. Aby komunikować się z katalogiem Lakehouse i Cloud Storage, podsieć musi mieć włączony prywatny dostęp do Google.

  1. W konsoli Google Cloud otwórz stronę Sieci VPC.
  2. Kliknij nazwę sieci, która zawiera podsieć, w której musisz włączyć prywatny dostęp do Google. Na przykład: us-west1.
  3. Kliknij nazwę podsieci. Wyświetli się strona z informacjami o podsieci.
  4. Kliknij Edytuj.
  5. W sekcji Prywatny dostęp do Google wybierz Włącz.
  6. Kliknij Zapisz.

5. Tworzenie i uruchamianie zadania Spark

Aby utworzyć tabelę Iceberg i wysłać do niej zapytanie, prześlij zadanie PySpark z niezbędnymi instrukcjami Spark SQL. Następnie uruchom zadanie za pomocą usługi zarządzanej dla Spark.

Prześlij plik quickstart.py do zasobnika Cloud Storage

Po sklonowaniu zasobów codelabu zaktualizuj skrypt quickstart.py, podając szczegóły projektu, i prześlij go do zasobnika Cloud Storage.

  1. Otwórz skrypt quickstart.py w edytorze tekstu.
  2. Zastąp w skrypcie symbol zastępczy BUCKET_NAME nazwą zasobnika Cloud Storage i zapisz skrypt.
  3. W konsoli Google Cloud otwórz zasobniki Cloud Storage.
  4. Kliknij nazwę zasobnika. Na przykład: acai_demo.
  5. Na karcie Obiekty kliknij Prześlij > Prześlij pliki.
  6. W przeglądarce plików wybierz zaktualizowany plik quickstart.py, a następnie kliknij Otwórz.

Uruchamianie zadania Spark

Po przesłaniu skryptu quickstart.py uruchom go jako zadanie wsadowe usługi zarządzanej dla Spark.

  1. Aby skonfigurować zmienne, uruchom to polecenie w Cloud Shell.
    # Configuration Variables
    export PROJECT_ID="<PROJECT_ID>"
    export REGION="<REGION>"
    export BUCKET_NAME="<BUCKET_NAME>"
    export SUBNET="<SUBNET>"
    export LAKEHOUSE_CATALOG_ID="<LAKEHOUSE_CATALOG_ID>"
    export CATALOG_URI_ID="<CATALOG_URI_ID>"
    
    Zastąp te elementy:
    • LAKEHOUSE_CATALOG_ID: nazwa zasobu katalogu Lakehouse, który zawiera plik aplikacji PySpark. Na przykład acai_demo
    • PROJECT_ID: identyfikator Twojego projektu Google Cloud.
    • REGION: region, w którym będzie uruchamiany zbiór zadań wsadowych usługi zarządzanej dla Spark. Na przykład: us-west1.
    • BUCKET_NAME: nazwa zasobnika Cloud Storage. Na przykład: acai_demo.
    • SUBNET: nazwa podsieci VPC. Na przykład: acai-network.
    • CATALOG_URI_ID: identyfikator URI katalogu Lakehouse, który został skopiowany podczas tworzenia katalogu Lakehouse z zasobnikiem. Na przykład: https://biglake.googleapis.com/iceberg/v1/restcatalog.
  2. W Cloud Shell uruchom to zadanie wsadowe usługi zarządzanej dla Sparka, korzystając ze skryptu quickstart.py.
      gcloud dataproc batches submit pyspark gs://${BUCKET_NAME}/quickstart.py \
         --project=${PROJECT_ID} \
         --region=${REGION} \
         --subnet=${SUBNET} \
         --version=2.2 \
         --properties="\
      spark.sql.defaultCatalog=${LAKEHOUSE_CATALOG_ID},\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}=org.apache.iceberg.spark.SparkCatalog,\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.type=rest,\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.uri=${CATALOG_URI_ID},\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.warehouse=gs://${BUCKET_NAME},\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO,\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.header.x-goog-user-project=${PROJECT_ID},\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager,\
      spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.rest-metrics-reporting-enabled=false,\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.header.X-Iceberg-Access-Delegation=vended-credentials,\
      spark.sql.catalog.${LAKEHOUSE_CATALOG_ID}.gcs.oauth2.refresh-credentials-endpoint=https://oauth2.googleapis.com/token"
    
     Stan uruchomionych zadań Spark możesz sprawdzić w sekcji Partie Dataproc.Po zakończeniu zadania wyświetlą się dane wyjściowe podobne do tych:
     All tables registered successfully!
     Batch [126fa2226a904d2e944c8eecbe0b1840] finished.
     metadata:
       '@type': type.googleapis.com/google.cloud.dataproc.v1.BatchOperationMetadata
       batch: projects/PROJECT_ID/locations/REGION/batches/126fa2226a904d2e944c8eecbe0b1840
       batchUuid: 3bff88ca-64d6-4c16-b9ad-2a47ae93ebff
       createTime: '2026-04-09T13:17:26.222727Z'
       description: Batch
       labels:
         goog-dataproc-batch-id: 126fa2226a904d2e944c8eecbe0b1840
         goog-dataproc-batch-uuid: 3bff88ca-64d6-4c16-b9ad-2a47ae93ebff
         goog-dataproc-drz-resource-uuid: batch-3bff88ca-64d6-4c16-b9ad-2a47ae93ebff
         goog-dataproc-location: REGION
       operationType: BATCH
     name: projects/PROJECT_ID/regions/REGION/operations/47bc59e8-5082-3af9-89a0-22289aa5f4b9
    

6. Wykonywanie zapytań w tabeli z BigQuery

Uruchamiając zadanie wsadowe Spark, używasz usługi zarządzanej dla Spark Serverless jako rozproszonego silnika obliczeniowego do rejestrowania wielu tabel, po jednej na plik Parquet w metastore Lakehouse. Ta rejestracja umożliwia Google Cloud traktowanie nieprzetworzonych plików w Cloud Storage jako uporządkowanych tabel o wysokiej wydajności.

Poniższe kroki pomogą Ci sprawdzić, czy metadane zostały prawidłowo zsynchronizowane. Dzięki temu będziesz mieć pewność, że dane są nie tylko bezpiecznie przechowywane, ale też w pełni wykrywalne i można do nich wysyłać zapytania za pomocą interfejsu BigQuery.

  1. W konsoli Google Cloud otwórz BigQuery.
  2. W edytorze zapytań wpisz to stwierdzenie. Zapytanie korzysta ze składni project.namespace.dataset.table.
    SELECT * FROM `<PROJECT_ID>.<NAMESPACE>.<ICEBERG_DATASET>.<ICEBERG_TABLE>`
    
    Na przykład SELECT * FROM PROJECT_ID.acai_demo.acai_dataset.order_items.
    Zastąp te elementy:
    • PROJECT_ID: identyfikator Twojego projektu Google Cloud.
    • NAMESPACE: przestrzeń nazw utworzona w poprzednim kroku w wyniku zadania Spark. Możesz ją znaleźć na stronie eksploratora obiektów BigQuery. Na przykład: acai_demo.
    • ICEBERG_DATASET: nazwa zbioru danych w katalogu Iceberg, np. acai_dataset.
    • ICEBERG_TABLE: nazwa tabeli w zbiorze danych Iceberg, np. order_items.
  3. Kliknij Wykonaj. Wyniki zapytania pokazują dane wstawione za pomocą zadania Spark.Wynik danych dla tabeli z BigQuery

7. Konfigurowanie plików danych o produktach bez struktury

W tej sekcji utworzysz w BigQuery strukturę organizacyjną do przechowywania danych o przepisach i dostawcach Froyo, w szczególności szczegółów produktu Froyo. Ustanawia też połączenie z zasobem Cloud, które działa jak bezpieczny „most” umożliwiający BigQuery odczytywanie plików ze źródeł zewnętrznych, takich jak Cloud Storage.

Tworzenie zasobnika i przesyłanie plików szczegółowych Froyo

Utwórz pliki dostawcy i przepisu i prześlij je do zasobnika Cloud Storage.

  1. W konsoli Google Cloud otwórz stronę Zasobniki Cloud Storage.
  2. Kliknij Utwórz.
  3. Na stronie Utwórz zasobnik wpisz informacje o zasobniku. Po wykonaniu każdego z tych kroków kliknij Dalej, aby przejść do następnego:
  4. W sekcji Rozpocznij wpisz nazwę zasobnika. Na przykład: acai_pdfs.
  5. W sekcji Wybierz, gdzie chcesz zapisywać dane wybierz Region, a następnie wpisz region. Na przykład: us-west1.
  6. W sekcji Wybierz sposób kontrolowania dostępu do obiektów odznacz pole wyboru Wyegzekwuj blokadę dostępu publicznego do tego zasobnika.
  7. Kliknij Utwórz.
  8. Na liście zasobników kliknij utworzony zasobnik. Na przykład: acai_pdfs.
  9. Na karcie Obiekty w zasobniku kliknij Prześlij > Prześlij foldery.
  10. Wybierz folder recipes, który został wyodrębniony w sekcji Zanim zaczniesz tego laboratorium.
  11. Kliknij Prześlij.
  12. Powtórz proces przesyłania w przypadku folderu suppliers.

Tworzenie połączenia

Utwórz połączenie z zasobem Cloud. Spowoduje to wygenerowanie unikalnego konta usługi, które będzie pełnić rolę „karty identyfikacyjnej” BigQuery umożliwiającej dostęp do plików zewnętrznych.

  1. Otwórz stronę BigQuery.
  2. W panelu po lewej stronie kliknij Eksplorator. Jeśli nie widzisz lewego panelu, kliknij Rozwiń lewy panel, aby go otworzyć.
  3. W panelu Eksplorator rozwiń nazwę projektu, a następnie kliknij Połączenia.
  4. Na stronie Połączenia kliknij Utwórz połączenie.
  5. W sekcji Połączenie wybierz Modele zdalne Vertex AI, funkcje zdalne, BigLake i Spanner (zasób Cloud).
  6. W polu Identyfikator połączenia wpisz nazwę identyfikatora połączenia. Na przykład: acai_pdf_connection. Zanotuj ten identyfikator, ponieważ będzie on potrzebny podczas konfigurowania skanowania danych w dalszej części tego ćwiczenia.
  7. Ustaw Typ lokalizacji na Region, a następnie wybierz region. Na przykład: us-west1. Połączenie powinno być kolokowane z innymi zasobami, takimi jak zbiory danych.
  8. Kliknij Utwórz połączenie.
  9. Kliknij Przejdź do połączenia.
  10. W panelu Informacje o połączeniu skopiuj identyfikator konta usługi, aby użyć go w kolejnym kroku. Konto usługi wygląda podobnie do bqcx-175930350285-qn3a@gcp-sa-bigquery-condel.iam.gserviceaccount.com.

Zarządzanie dostępem do kont usługi

Przyznaj dostęp do konta usługi, aby Lakehouse mogło odczytywać pliki PDF.

  1. Otwórz stronę Administracja.
  2. Kliknij Przyznaj dostęp. Otworzy się okno Dodaj podmioty zabezpieczeń.
  3. W polu Nowe podmioty zabezpieczeń wpisz skopiowany wcześniej identyfikator konta usługi.
  4. W polu Wybierz rolę dodaj te role:
    • roles/storage.objectUser
    • roles/storage.objectViewer
    • roles/bigquery.user
    • roles/bigquery.dataEditor
    • roles/aiplatform.user
    • roles/storage.admin
    • roles/dataproc.serviceAgent
  5. Kliknij Zapisz.

Więcej informacji o rolach IAM w BigQuery znajdziesz w artykule Wstępnie zdefiniowane role i uprawnienia.

8. Zarządzanie uprawnieniami do zadania DataScan

Utwórz konkretne konta usługi (tożsamości) dla Sparka i Dataform, a następnie przyznaj im – wraz z automatycznymi agentami usługi Google – dokładne uprawnienia potrzebne do odczytywania pamięci masowej, uruchamiania zadań BigQuery i korzystania z Vertex AI na potrzeby wykrywania.

Dostęp IAM do Sparka i Dataform

  1. W konsoli Google Cloud otwórz stronę Utwórz konto usługi.
  2. Jeśli nie jest wybrany, wybierz projekt Google Cloud.
  3. Kliknij Utwórz konto usługi.
  4. Wpisz nazwę konta usługi. Na przykład: sa-spark-stg1. Konsola Google Cloud wygeneruje na podstawie tej nazwy identyfikator konta usługi. W razie potrzeby zmodyfikuj identyfikator. Później nie będzie już można go zmienić.
  5. Aby skonfigurować kontrolę dostępu, kliknij Utwórz i kontynuuj, a potem przejdź do następnego kroku.
  6. Wybierz te role uprawnień, które chcesz przypisać do konta usługi w projekcie.
    • roles/dataproc.worker
    • roles/storage.objectUser
    • roles/bigquery.dataEditor
    • roles/bigquery.jobUser
    • roles/aiplatform.user
    • roles/dataplex.discoveryPublishingServiceAgent
  7. Gdy skończysz dodawać role, kliknij Dalej.
  8. Aby zakończyć tworzenie konta usługi, kliknij Gotowe.

Uprawnienia do połączenia z BigQuery umożliwiające dostęp do Knowledge Catalog

  1. W konsoli Google Cloud otwórz stronę Zasobniki Cloud Storage.
  2. Na liście zasobników kliknij nazwę zasobnika utworzonego dla Froyo. Na przykład: acai_pdfs.
  3. Na karcie Uprawnienia kliknij Przyznaj dostęp. Pojawi się okno Dodaj podmioty zabezpieczeń.
  4. W polu Nowe podmioty zabezpieczeń wpisz identyfikator konta usługi BigQuery. Konto usługi wygląda podobnie do bqcx-175930350285-qn3a@gcp-sa-bigquery-condel.iam.gserviceaccount.com.
  5. Wybierz z menu Wybierz rolę te role:
    • roles/storage.objectUser
    • roles/dataplex.serviceAgent
    • roles/dataplex.securityAdmin
    • roles/aiplatform.serviceAgent
    • roles/dataplex.discoveryPublishingServiceAgent
  6. Kliknij Zapisz.

9. Konfigurowanie usługi Knowledge Catalog

Utwórz Knowledge Catalog, aby ujednolicić dane związane z mrożonym jogurtem i zautomatyzować wykrywanie nieuporządkowanych plików (takich jak przepisy w formacie PDF i dostawcy w formacie PDF).

Utwórz skanowanie danych za pomocą curl.

W tej sekcji utworzysz skanowania zasobnika Cloud Storage (np. acai_pdfs), dodając datascan_ID i kierując go do zbiorów danych BigQuery. Następnie usługa Knowledge Catalog automatycznie utworzy wpisy dotyczące plików PDF w BigQuery.

  1. Aby przeskanować pliki PDF (dostawców i przepisy), uruchom to polecenie:
    # 1. Set your variables
    PROJECT_ID="<PROJECT_ID>"
    REGION="<REGION>"
    ENV_SUFFIX="stg1"
    DATASCAN_ID="froyo-profile-${ENV_SUFFIX}"
    BUCKET_NAME="<BUCKET_NAME>"
    
    # 2. Set this to the Name of the connection you created in Step 7
    CONNECTION_ID="<CONNECTION_ID_NAME>"
    
    # 3. Define the API Endpoint
    DATAPLEX_API="dataplex.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}"
    
    # 4. Create the DataScan via CURL
    echo "Creating Dataplex DataScan: ${DATASCAN_ID}..."
    
    curl -X POST "https://$DATAPLEX_API/dataScans?dataScanId=${DATASCAN_ID}" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
    "data": {
       "resource": "//storage.googleapis.com/projects/'"${PROJECT_ID}"'/buckets/'"${BUCKET_NAME}"'"
       },
    "executionSpec": {
       "trigger": {
          "on_demand": {}
       }
    },
    "dataDiscoverySpec": {
       "bigqueryPublishingConfig": {
          "tableType": "BIGLAKE",
          "connection": "projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/connections/'"${CONNECTION_ID}"'"
       },
       "storageConfig": {
          "unstructuredDataOptions": {
          "entity_inference_enabled": true
          }
       }
       }
    }'
    
  2. Polecenie curl wyświetla wyniki skanowania danych Knowledge Catalog, podobnie jak na tym obrazie. Wynik skanowania danych

Uruchamianie zadania

Uruchom to polecenie:

  gcloud dataplex datascans run $DATASCAN_ID --location=$REGION

Opisywanie zadania

Aby opisać zadanie, uruchom to polecenie:

  gcloud dataplex datascans describe $DATASCAN_ID --location=$REGION

Usuwanie zadania skanowania danych

Jeśli skanowanie trwa dłużej niż 10 minut lub stan zadania pozostaje Oczekujące przez dłuższy czas bez przejścia do stanu Wykonywanie, może to być spowodowane tymczasową niedostępnością zasobów w regionie. W takim przypadku możesz uruchomić to polecenie, aby usunąć zadanie, a następnie spróbować utworzyć i uruchomić je ponownie. Czasami pierwsze uruchomienie może szybko zakończyć się niepowodzeniem z błędem, np. unable to acquire necessary resources.

   gcloud dataplex datascans delete $DATASCAN_ID --location=$REGION

Wyświetlanie stanu zadania

Aby sprawdzić stan zadania:

  1. W konsoli Google Cloud otwórz stronę Tworzenie metadanych.
  2. Na karcie Wykrywanie w Cloud Storage kliknij nazwę skanów wykrywania.stan zadania,
  3. Na stronie Szczegóły skanowania możesz sprawdzić stan zadania.
  4. Po zakończeniu zadania sprawdź, czy istnieje opublikowany zbiór danych (np. acai_pdfs_discovered_003) utworzony za pomocą polecenia curl.Opublikowany zbiór danych po skanowaniu

Wyświetlanie tabeli obiektów

Aby wyświetlić tabelę obiektów utworzoną po zakończeniu zadania wykrywania:

  1. W konsoli Google Cloud otwórz BigQuery.
  2. Kliknij Zbiory danych i wybierz opublikowany zbiór danych utworzony w poprzednim kroku. Na przykład: acai_pdfs_discovered_003.
  3. Aby wyświetlić tabelę obiektów, kliknij identyfikator tabeli. Na przykład: acai_pdfs.
  4. Wynikowa tabela obiektów wygląda tak:Tabela opublikowanych obiektów zbioru danych

10. Wyodrębnianie semantyczne

Wywnioskujesz i wyodrębnisz uporządkowane tabele, inne obiekty bazy danych i relacje dla utworzonej w poprzednim kroku nieuporządkowanej tabeli obiektów. W tym celu użyjesz funkcji statystyk Knowledge Catalog, aby wygenerować instrukcje SQL do wyodrębniania danych strukturalnych z nieustrukturyzowanej tabeli.

  1. W konsoli Google Cloud otwórz stronę Wyszukiwanie w Knowledge Catalog.
  2. Wyszukaj tabelę zbioru danych, dla której chcesz wyświetlić statystyki. Na przykład: acai_pdfs_discovered_003. Wyświetlanie tabeli w Knowledge Catalog
  3. W wynikach wyszukiwania kliknij tabelę, aby otworzyć jej stronę.
  4. Kliknij kartę Statystyki. Jeśli karta jest pusta, oznacza to, że statystyki dotyczące tej tabeli nie zostały jeszcze wygenerowane. Wygenerowanie statystyk może potrwać od 15 do 25 minut.
  5. Gdy zobaczysz statystyki, kliknij Wyodrębnij > Wyodrębnij za pomocą SQL.Wyodrębnianie informacji za pomocą SQL
  6. Na stronie Wyodrębnij za pomocą SQL w polu Miejsce docelowe wpisz zbiór danych. Na przykład: acai_pdfs_discovered_003.
  7. Kliknij Wyodrębnij. Otworzy się edytor BigQuery z załadowanym zapytaniem.
  8. Kliknij Wykonaj. Ten krok generuje zestaw instrukcji i może potrwać kilka minut.
  9. Po zakończeniu zapytania zobaczysz te wyniki:Wynik zapytania o wyodrębnione statystyki
  10. Otwórz BigQuery i kliknij Zbiory danych (np. acai_pdfs_discovered_003). W zbiorze danych wybranym w kroku 6 utworzy się nowy zestaw obiektów bazy danych o strukturze.Wynik uporządkowanej bazy danych

Generowanie statystyk dotyczących obiektu w BigQuery

Aby wygenerować statystyki dotyczące zbioru danych BigQuery, musisz uzyskać do niego dostęp w BigQuery za pomocą BigQuery Studio.

  1. W konsoli Google Cloud otwórz BigQuery Studio.
  2. W panelu Eksplorator wybierz projekt i przejdź do zbioru danych, dla którego chcesz wygenerować statystyki.
  3. Kliknij kartę Statystyki.
  4. Jeśli widzisz przycisk Włącz API, kliknij go, aby włączyć Gemini w Google Cloud. Otworzy się okno Włącz podstawowe funkcje.
    1. W sekcji Interfejsy API głównych funkcji kliknij Włącz w przypadku Gemini for Google Cloud API i BigQuery Unified API, a następnie kliknij Dalej.
    2. W sekcji Uprawnienia (opcjonalnie) w razie potrzeby przyznaj rolę uprawnień podmiotom, a potem kliknij Dalej.
  5. Aby wygenerować statystyki i opublikować je w Knowledge Catalog, kliknij Wygeneruj i opublikuj.
  6. Po opublikowaniu na karcie będą dostępne statystyki.Statystyki dotyczące obiektu w BigQuery

11. Konfigurowanie środowiska IDE pod kątem analityki danych opartej na agentach

Rozszerzenie Google Cloud Data Agent Kit dla Visual Studio Code to rozszerzenie IDE dla analityków i inżynierów danych. Umożliwia łączenie się z zasobami i danymi Google Data Cloud oraz pracę z nimi bezpośrednio w IDE. Więcej informacji znajdziesz w omówieniu rozszerzenia Data Agent Kit dla VS Code.

Rozszerzenie Data Agent Kit do VS Code przydaje się, gdy chcesz:

  • Twórz, testuj, sprawdzaj i wdrażaj gotowe do produkcji potoki danych, takie jak Spark ETL lub BigQuery ETL, bezpośrednio z VS Code.
  • Eksploruj dane, twórz potok trenowania, identyfikuj optymalne modele ML i wdrażaj je w punkcie końcowym produkcyjnym za pomocą pomocy AI.
  • Łącz się z zaufanymi źródłami danych, twórz modele danych o wysokiej wydajności i publikuj interaktywne panele dla osób zainteresowanych wynikami biznesowymi.

Instalowanie rozszerzenia Data Agent Kit w VS Code

  1. Otwórz VS Code.
  2. Zainstaluj Google Cloud CLI. Więcej informacji znajdziesz w artykule Instalowanie Google Cloud CLI.
  3. Zainstaluj rozszerzenie Data Agent Kit dla VS Code.
  4. Dokończ proces rejestracji rozszerzenia. W tym celu:
    • Zaloguj się w rozszerzeniu
    • Instalowanie umiejętności, serwery MCP
  5. Po zakończeniu procesu wprowadzającego odśwież lub uruchom ponownie okno. Więcej informacji znajdziesz w artykule Konfigurowanie i instalowanie rozszerzenia Data Agent Kit w VS Code.
  6. Po ponownym wczytaniu środowiska IDE kliknij ikonę Google Data Cloud w panelu nawigacji, przejdź do ustawień i upewnij się, że w ustawieniach ogólnych prawidłowo skonfigurowano identyfikator projektu i region (us-west1).

Konfigurowanie obszaru roboczego w VS Code

  1. Otwórz VS Code i wybierz Plik > Otwórz folder > Nowy folder.
  2. Utwórz nowy folder o nazwie acai_test, a następnie kliknij Otwórz. VS Code uzna teraz otwarty folder za obszar roboczy.
  3. W oknie dialogowym Zaufanie do Workspace wybierz Tak, ufam autorom, aby włączyć wszystkie funkcje w obszarze roboczym.
  4. Utwórz folder .github w obszarze roboczym acai_test.
  5. Utwórz nowy plik copilot-instructions.md w folderze .github i wpisz w nim te reguły.
    ## 1. Project Context
    - **Project ID**: <PROJECT_ID>
    - **Domain**: This project is centralized around "Froyo", a brand of frozen yogurt offering multiple flavors.
    - **Documentation**: Raw PDF documents detailing flavors and ingredients are stored in Google Cloud Storage at `gs://<BUCKET_NAME>`.
    
    ## 2. Execution & Data Processing Rules
    - **CRITICAL RULE - Structured Specs**: The semantic and structured information extracted from the PDFs is available in a BigQuery dataset named `<BQ_DATASET_NAME>` (referred to as the Knowledge Catalog).
    - **CRITICAL RULE - Customer Data**: Existing Froyo customer data resides in BigQuery in the dataset `<DATASET_ID>`. When you are referencing a dataset, ensure you are using it with the project ID (`<PROJECT_ID>`) and namespace prefix `<NAMESPACE_NAME>`. For example, to query order table in this dataset you should use `<PROJECT_ID>.<NAMESPACE>.<DATASET_ID>.orders`.
    - **CRITICAL RULE - Data Joins between BigQuery dataset and Iceberg dataset**: ANY task requiring a join or integration between the BigQuery datasets `<DATASET_ID>` of the PDF data and the `<DATASET_ID>` of the customer data MUST be executed using **Spark Notebooks**.
    - **CRITICAL RULE - Notebook Kernel**: Every Spark notebook utilized MUST exclusively be configured to run on the Serverless Session template `iceberg-federation-template` as its kernel.
    - **CRITICAL RULE - Data Science**: ANY data science, machine learning, or advanced analytical task MUST be performed strictly within **Spark Notebooks** using the aforementioned setup.
    
  6. Utwórz kolejny nowy plik template.yaml w obszarze roboczym acai_test i wpisz w nim te informacje:
    labels:
     client: "vscode"
    jupyterSession:
     displayName: "iceberg-federation-template"
     kernel: "PYTHON"
    environmentConfig:
     executionConfig:
       serviceAccount: "sa-spark-dev1@<PROJECT_ID>.iam.gserviceaccount.com"
       subnetworkUri: "projects/<PROJECT_ID>/regions/<REGION>/subnetworks/<SUBNET_NAME>"
    runtimeConfig:
     version: "2.3"
     properties:
     # This enables the secure proxy URL you were looking for
       dataproc.tier: "premium"
       spark.dataproc.engine: "lightningEngine"
       spark.dataproc.lightningEngine.runtime: "native"
       spark.memory.offHeap.enabled: "true"
       spark.memory.offHeap.size: "1g"
       spark.executor.memory: "4g"
       "dataproc.component.gateway.enabled": "true"
       "dataproc.jupyter.listen.all.interfaces": "true"
       "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
       "spark.sql.defaultCatalog": "<CATALOG_NAME>"
       "spark.sql.catalog.<CATALOG_NAME>": "org.apache.iceberg.spark.SparkCatalog"
       "spark.sql.catalog.<CATALOG_NAME>.type": "rest"
       "spark.sql.catalog.<CATALOG_NAME>.uri": "<CATALOG_URI_ID>"
       "spark.sql.catalog.<CATALOG_NAME>.warehouse": "bl://projects/<PROJECT_ID>/catalogs/<CATALOG_NAME>"
       "spark.sql.catalog.<CATALOG_NAME>.rest.auth.type": "org.apache.iceberg.gcp.auth.GoogleAuthManager"
    
  7. W VS Code kliknij Terminal i uruchom to polecenie, aby zaimportować plik template.yaml jako szablon sesji. Ten szablon jest później używany przez agenta do utworzenia sesji Spark.
    gcloud beta dataproc session-templates import iceberg-federation-template \
        --source=template.yaml \
        --location=<REGION>
    
    Zastąp REGION swoim regionem.

12. Przeprowadzanie analizy danych przez agenta

  1. W edytorze kodu VS Code kliknij Przełącz czat.
  2. W sekcji Skonfiguruj agentów niestandardowych wybierz Agent. Wybierz agenta w VS Code
  3. W panelu Modele wyszukiwania kliknij Zarządzaj modelami językowymi. Ikona zarządzania modelem w VS Code
  4. Na stronie Modele językowe kliknij Dodaj modele.
  5. Wybierz z listy Google i naciśnij Enter, aby potwierdzić wybór.Dodawanie modelu Google Gemini w VS Code
  6. Aby wprowadzić klucz interfejsu API do Google Gemini, wykonaj te czynności:
    1. Otwórz stronę Google AI Studio.
    2. Zaloguj się na konto Google.
    3. Na pasku bocznym kliknij Uzyskaj klucz API.
    4. Kliknij Utwórz klucz interfejsu API. Otworzy się strona Utwórz nowy klucz.
    5. Na liście Wybierz projekt w chmurze kliknij Importuj projekt.
    6. Wpisz nazwę istniejącego projektu.
    7. Kliknij Utwórz klucz i skopiuj klucz interfejsu API. Klucz zapewnia dostęp do zasobów Gemini API na Twoim koncie.Więcej informacji znajdziesz w artykule Korzystanie z kluczy Gemini API.
  7. Wklej wygenerowany klucz interfejsu API w pasku wyszukiwania i kliknij Enter. Klucz interfejsu Google Gemini API
  8. Jeśli modele Gemini się nie wyświetlają, odkryj je, jak pokazano na tym obrazie: Odkrywanie modeli Google Gemini
  9. Na liście modeli Google Gemini wybierz Gemini 3.1 Pro w wersji testowej i zamknij okno Modele językowe.
  10. W oknie czatu wpisz to pytanie:
       Search ingredients for Midnight papaya
    
  11. Po pewnym czasie powinny się wyświetlić te wyniki:Wyniki zapytania o składniki Midnight Papaya
  12. W oknie czatu wpisz kolejne pytanie:
       Search allergen information for Midnight papaya
    
  13. Po kilku interakcjach i wykonaniu kilku czynności zobaczysz odpowiedź agenta z nazwą alergenu Soy, jak widać na tym obrazie:Wyniki dotyczące alergenów w przypadku papai Midnight
  14. W oknie czatu wpisz kolejne pytanie:
       Build a pipeline to join products with our 'Global Loyalty' Iceberg tables in acai customer, sales data to identify popular products
    
  15. Aby wybrać jądro, otwórz plik .ipynb i kliknij Select kernel (Wybierz jądro) > Remote spark kernels (Zdalne jądra Sparka) > Iceberg-federation-template on serverless sparkWybieranie jądra w VS Code.
  16. Po wykonaniu kilku czynności zobaczysz, że agent odpowie, że wszystkie kroki w notatniku zostały wykonane, a na końcu notatnika pojawi się wynik końcowy, jak widać na tym obrazie:Wyniki zapytania dotyczące tabel Iceberg

13. Czyszczenie danych

Aby uniknąć obciążenia konta opłatami, usuń zasoby utworzone w tym module.

  1. Aby usunąć skanowanie danych Knowledge Catalog, uruchom to polecenie:
      DATASCAN_ID="<DATASCAN_ID>"
      echo "Deleting Dataplex DataScan: ${DATASCAN_ID}"
      gcloud dataplex datascans delete "${DATASCAN_ID}" --location="${REGION}" --quiet
    
  2. Aby usunąć zasobniki Cloud Storage i całą ich zawartość, uruchom to polecenie:
      echo "Deleting Cloud Storage buckets: <BUCKET_NAME1> and <BUCKET_NAME2>"
      gsutil -m rm -r gs://<BUCKET_NAME1>
      gsutil -m rm -r gs://<BUCKET_NAME2>
    
  3. Aby usunąć połączenie z BigQuery, uruchom to polecenie:
      CONNECTION_ID="<CONNECTION_NAME>"
      echo "Deleting BigQuery Connection: ${CONNECTION_ID}"
      bq rm --connection "${PROJECT_ID}.${REGION}.${CONNECTION_ID}"
    
  4. Aby usunąć katalog Lakehouse, uruchom to polecenie:
      CATALOG_ID="<CATALOG_NAME>"
      echo "Deleting Lakehouse Catalog: ${CATALOG_ID}"
      gcloud biglake catalogs delete "${CATALOG_ID}" --project="${PROJECT_ID}" --location="${REGION}" --quiet
    
  5. Aby usunąć zbiór danych zawierający wykryte tabele PDF, uruchom to polecenie:
      DATASET_NAME="<DATASET_NAME>"
      echo "Deleting BigQuery Dataset: ${DATASET_NAME}"
      bq rm -r -f "${PROJECT_ID}:${DATASET_NAME}"
    
  6. Aby usunąć niestandardowe konto usługi, uruchom to polecenie:
      SERVICE_ACCOUNT="<SERVICE_ACCOUNT>"
      echo "Deleting Service Account: ${SERVICE_ACCOUNT}"
      gcloud iam service-accounts delete "${SERVICE_ACCOUNT}"@"${PROJECT_ID}".iam.gserviceaccount.com --quiet
    
  7. Aby usunąć sieć VPC, uruchom to polecenie:
      VPC_NETWORK="<VPC_NETWORK>"
      echo "Deleting VPC Network: ${VPC_NETWORK}"
      gcloud compute networks delete "${VPC_NETWORK}" --quiet
    
  8. Aby usunąć cały projekt Google Cloud, uruchom to polecenie:
      gcloud projects delete "${PROJECT_ID}"
    

14. Gratulacje

Gratulacje! Udało Ci się uporządkować dane z izolowanych plików PDF i Parquet w tabelach BigQuery i połączyć je w jeden ekosystem, w którym można wyszukiwać i łączyć dane. W zasadzie udało Ci się zbudować nowoczesną platformę Data Lakehouse, która traktuje pliki PDF i formaty big data w inteligentny sposób, podobnie jak wiersz w bazie danych. Wszystko to możesz zrobić bezpośrednio w agencie w trybie konwersacyjnym z Gemini.

Dokumentacja

Aby dowiedzieć się więcej o podstawowych technologiach używanych w tym ćwiczeniu, zapoznaj się z oficjalną dokumentacją Google Cloud: