Tworzenie zbioru danych to proces dwuetapowy:
Prześlij prośbę o utworzenie zbioru danych.
wysłać prośbę o przesłanie danych do zbioru danych;
Po pierwszym przesłaniu danych możesz przesłać nowe dane do zbioru danych, aby utworzyć jego nową wersję.
Tworzenie zbioru danych
Utwórz zbiór danych, wysyłając żądanie POST
do punktu końcowego datasets:
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets
Przekaż do żądania treść JSON, która definiuje zbiór danych. Musisz:
Określ
displayName
zbioru danych. WartośćdisplayName
musi być niepowtarzalna we wszystkich zbiorach danych.Ustaw wartość
usage
naUSAGE_DATA_DRIVEN_STYLING
.
Na przykład:
curl -X POST -d '{ "displayName": "My Test Dataset", "usage": "USAGE_DATA_DRIVEN_STYLING" }' \ -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets"
Odpowiedź zawiera identyfikator zbioru danych w formacie projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID
oraz dodatkowe informacje. Używaj identyfikatora zbioru danych podczas wysyłania żądań aktualizacji lub modyfikacji zbioru danych.
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46", "displayName": "My Test Dataset", "usage": [ "USAGE_DATA_DRIVEN_STYLING" ], "createTime": "2022-08-15T17:50:00.189682Z", "updateTime": "2022-08-15T17:50:00.189682Z" }
Przesyłanie danych do zbioru danych
Po utworzeniu zbioru danych prześlij do niego dane z Google Cloud Storage lub z pliku lokalnego.
Operacja przesyłania jest asynchroniczna. Po przesłaniu dane są wczytywane i przetwarzane. Oznacza to, że musisz wysłać żądanie HTTP GET, aby monitorować stan zbioru danych i sprawdzić, kiedy będzie on gotowy do użycia lub czy wystąpiły jakieś błędy. Więcej informacji znajdziesz w artykule Pobieranie stanu przetwarzania danych.
Przesyłanie danych z Cloud Storage
Aby przesłać dane ze Cloud Storage do zbioru danych, wyślij żądanie POST
do punktu końcowego datasets, które zawiera też identyfikator zbioru danych:
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
W treści żądania w formacie JSON:
Użyj
inputUri
, aby określić ścieżkę pliku do zasobu zawierającego dane w Cloud Storage. Ścieżka ma formatgs://GCS_BUCKET/FILE
.Użytkownik wysyłający żądanie musi mieć rolę Przeglądający obiekt pamięci lub inną rolę, która obejmuje uprawnienie
storage.objects.get
. Więcej informacji o zarządzaniu dostępem do Cloud Storage znajdziesz w artykule Omówienie kontroli dostępu.Użyj
fileFormat
, aby określić format pliku danych:FILE_FORMAT_GEOJSON
(plik GeoJson),FILE_FORMAT_KML
(plik KML) lubFILE_FORMAT_CSV
(plik CSV).
Na przykład:
curl -X POST -d '{ "gcs_source":{ "inputUri": "gs://my_bucket/my_csv_file", "fileFormat": "FILE_FORMAT_CSV" } }' \ -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \ -H "content-type: application/json" \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:import"
Odpowiedź ma postać:
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER" }
Przesyłanie danych z pliku
Aby przesłać dane z pliku, wyślij żądanie HTTP POST
do punktu końcowego datasets, które zawiera też identyfikator zbioru danych:
https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
Żądanie zawiera:
Nagłówek
Goog-Upload-Protocol
ma wartośćmultipart
.Właściwość
metadata
określająca ścieżkę do pliku, który określa typ przesyłanych danych jako:FILE_FORMAT_GEOJSON
(plik GeoJSON),FILE_FORMAT_KML
(plik KML) lubFILE_FORMAT_CSV
(plik CSV).Zawartość tego pliku ma taki format:
{"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
Właściwość
rawdata
określająca ścieżkę do pliku GeoJSON, KML lub CSV zawierającego dane do przesłania.
W tym żądaniu użyto opcji curl -F
, aby określić ścieżkę do 2 plików:
curl -X POST \ -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \ -H "Authorization: Bearer $TOKEN" \ -H "X-Goog-Upload-Protocol: multipart" \ -F "metadata=@csv_metadata_file" \ -F "rawdata=@csv_data_file" \ "https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:import"
Odpowiedź ma postać:
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER" }
Pobieranie stanu przetwarzania danych
Operacja przesyłania jest asynchroniczna. Oznacza to, że po wywołaniu interfejsu API w celu przesłania danych do zbioru danych musisz sprawdzić, czy wczytywanie i przetwarzanie danych zakończyło się powodzeniem, czy nie.
Aby określić state
zbioru danych, użyj funkcji Pobierz zbiór danych. Na przykład podczas przetwarzania danych wartość state
jest ustawiona na STATE_PROCESSING
. Gdy zbiór danych będzie gotowy do użycia w aplikacji, ikona state
zmieni się na STATE_COMPLETED
.
Na przykład wywołaj metodę GET w zbiorze danych:
curl -X GET \ -H "X-Goog-User-Project: PROJECT_NUMBER_OR_ID" \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46"
Aby przesłanie się powiodło, state
zbioru danych musi być STATE_COMPLETED
:
{ "name": "projects/119757857/datasets/f57074a0-a8b6-403e-9df1-e9fc46", "displayName": "My Test Dataset", "description": " ", "versionId": "837c5a9e-c885-4a5f-a462-7e35673e5218", "usage": [ "USAGE_DATA_DRIVEN_STYLING" ], "localFileSource": { "filename": "Parks_Properties_20240529.csv", "fileFormat": "FILE_FORMAT_CSV" }, "createTime": "2024-05-30T16:41:11.130816Z", "updateTime": "2024-05-30T16:41:14.416130Z", "versionCreateTime": "2024-05-30T16:41:14.416130Z", "status": { "state": "STATE_COMPLETED", }, "sizeBytes": "6916924", "downloadable": true }
Gdy przetwarzanie danych się nie powiedzie, wartość parametru state
jest ustawiana na wartość inną niż STATE_COMPLETED
, np. STATE_PUBLISHING_FAILED
lub dowolny stan kończący się ciągiem znaków _FAILED
.
Na przykład przesyłasz dane do zbioru danych, a potem wysyłasz żądanie GET, aby uzyskać szczegółowe informacje o zbiorze danych. Oprócz właściwości state
odpowiedź zawiera też pojedynczą właściwość errorMessage
z opisem błędu.
{ "name": "projects/119757857/datasets/f57074a0-a8b6-403e-9df1-e9fc46", "displayName": "My Test Dataset", "description": " ", "versionId": "837c5a9e-c885-4a5f-a462-7e35673e5218", "usage": [ "USAGE_DATA_DRIVEN_STYLING" ], "localFileSource": { "filename": "Parks_Properties_20240529.csv", "fileFormat": "FILE_FORMAT_CSV" }, "createTime": "2024-05-30T16:41:11.130816Z", "updateTime": "2024-05-30T16:41:14.416130Z", "versionCreateTime": "2024-05-30T16:41:14.416130Z", "status": { "state": "STATE_PUBLISHING_FAILED", "errorMessage": "INVALID_ARGUMENT: Skipping row because address could not be geocoded: 5521 18 AVENUE (from line 79)" }, "sizeBytes": "6916924", "downloadable": true }
Pobieranie błędów przetwarzania danych
Gdy przesyłanie i przetwarzanie danych się nie powiedzie, właściwość errorMessage
zawiera pojedynczy komunikat opisujący błąd. Jednak pojedynczy komunikat o błędzie nie zawsze zawiera wystarczające informacje, aby zidentyfikować i naprawić problemy.
Aby uzyskać pełne informacje o błędzie, wywołaj interfejs API fetchDatasetErrors
. Ten interfejs API zwraca wszystkie błędy przetwarzania danych powiązane ze zbiorem danych:
curl -X GET \ -H "X-Goog-User-Project: PROJECT_NUMBER_OR_ID" \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:fetchDatasetErrors"
Odpowiedź zawiera tablicę errors
. Ta tablica zawiera maksymalnie 50 błędów typu Status
na wywołanie i obsługuje łącznie do 500 błędów:
{ "nextPageToken": "cigKJkIkMTU3MzM0NjQtYzlmMy00YzYxLWIxM2YtYmVkYjFjYjRkYzRj", "errors": [ { "code": 3, "message": "INVALID_ARGUMENT: No address was derived from fields 2. (from line 631)" }, { "code": 3, "message": "INVALID_ARGUMENT: No address was derived from fields 2. (from line 457)" }, { "code": 3, "message": "INVALID_ARGUMENT: No address was derived from fields 2. (from line 31)" }, ... ] }
Jeśli błędów jest więcej niż 50, czyli więcej niż 1 strona błędów, odpowiedź zawiera token strony w polu nextPageToken
.
Przekaż tę wartość w parametrze zapytania pageToken
w kolejnym wywołaniu, aby uzyskać następną stronę błędów. Gdy pole nextPageToken
jest puste, nie ma więcej stron.
Aby na przykład pobrać następną stronę błędów za pomocą tokena z poprzedniej odpowiedzi:
curl -X GET \ -H "content-type: application/json" \ -H "X-Goog-User-Project: PROJECT_NUMBER_OR_ID" \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:fetchDatasetErrors?pageToken=cigKJkIkMTU3MzM0NjQtYzlmMy00YzYxLWIxM2YtYmVkYjFjYjRkYzRj"
Domyślnie odpowiedź zawiera maksymalnie 50 błędów na stronę. Aby kontrolować rozmiar strony, użyj parametru zapytania pageSize
.
Przesyłanie nowych danych do zbioru danych
Po utworzeniu zbioru danych i przesłaniu początkowych danych stan zbioru danych zmieni się na STATE_COMPLETED
. Oznacza to, że zbiór danych jest gotowy do użycia w aplikacji. Aby określić state
zbioru danych, zapoznaj się z artykułem Pobieranie zbioru danych.
Możesz też przesłać do zbioru danych nowe dane, aby utworzyć jego nową wersję. Aby przesłać nowe dane, wykonaj te same czynności, co w przypadku przesyłania danych z Cloud Storage lub przesyłania danych z pliku, i wskaż nowe dane do przesłania.
Jeśli nowe dane zostaną przesłane:
Stan nowej wersji zbioru danych zostanie ustawiony na
STATE_COMPLETED
.Nowa wersja staje się wersją „aktywną” i jest używana przez Twoją aplikację.
Jeśli podczas przesyłania wystąpi błąd:
Stan nowej wersji zbioru danych jest ustawiony na jeden z tych stanów:
STATE_IMPORT_FAILED
STATE_PROCESSING_FAILED
STATE_PUBLISHING_FAILED
STATE_DELETION_FAILED
Poprzednia wersja zbioru danych pozostanie „aktywną” wersją i będzie używana przez aplikację.