Veri kümesi oluşturma

Veri kümesi oluşturma iki adımlı bir işlemdir:

  1. Veri kümesini oluşturma isteğinde bulunun.

  2. Veri kümesine veri yükleme isteğinde bulunun.

İlk veri yükleme işleminden sonra, veri kümesine yeni veriler yükleyerek yeni bir sürüm oluşturabilirsiniz.

Veri kümesini oluşturma

Veri kümesi oluşturmak içinPOST veri kümeleri uç noktası:

https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets

JSON gövdesi iletme isteğe bağlı olarak kullanırız. Bu politika uyarınca:

  • Veri kümesinin displayName öğesini belirtin. displayName değeri tüm veri kümeleri için benzersiz olmalıdır.

  • usage değerini USAGE_DATA_DRIVEN_STYLING olarak ayarlayın.

Örneğin:

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"

Yanıt, veri kümesinin kimliğini şu biçimde içerir: projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID. ek bilgilerle birlikte gönderebilirsiniz. Veri kümesi kimliğini kullanarak veri kümesini güncelleyebilir veya değiştirebilir.

{
  "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" 
}

Veri kümesine veri yükleme

Veri kümesini oluşturduktan sonra Google Cloud Storage veya yerel bir dosyadan veri kümesine eklenir.

Yükleme işlemi eşzamansız olarak yapılır. Yüklendikten sonra veriler otomatik olarak alıp işleme koyduk. Yani, izleme amacıyla bir HTTP GET isteği göndermeniz kullanıma hazır olup olmadığını belirlemek için göz attım. Daha fazla bilgi için Veri işlemeyi alma başlıklı makaleyi inceleyin. durum.

Cloud Storage'dan veri yükleme

Cloud Storage'dan veri kümenize veri kümesine POST isteği göndererek veri kümeleri uç noktası da veri kümesinin kimliğini içerir:

https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import

JSON istek gövdesinde:

  • Verileri içeren kaynağın dosya yolunu belirtmek için inputUri değerini kullanın . Bu yol, gs://GCS_BUCKET/FILE

    İstekte bulunan kullanıcı için Storage Nesnesi Görüntüleyen rolü veya storage.objects.get iznini içeren başka bir rol. Örneğin, Cloud Storage'a erişimi yönetme hakkında daha fazla bilgi için bkz. Erişim denetimine genel bakış.

  • Verilerin dosya biçimini aşağıdaki şekilde belirtmek için fileFormat kullanın: FILE_FORMAT_GEOJSON (GeoJson dosyası), FILE_FORMAT_KML (KML dosyası) veya FILE_FORMAT_CSV (CSV dosyası).

Örneğin:

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"

Yanıt şu biçimdedir:

{
  "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER"
}

Dosyadan veri yükleme

Bir dosyadan veri yüklemek için şuraya HTTP POST isteği gönderin veri kümeleri uç noktası da veri kümesinin kimliğini içerir:

https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
.

İstek şunları içeriyor:

  • Goog-Upload-Protocol başlığı multipart olarak ayarlandı.

  • metadata özelliği, Yüklenecek verilerin türü. Bunlar şunlardan biridir: FILE_FORMAT_GEOJSON (GeoJSON dosyası), FILE_FORMAT_KML (KML dosyası) veya FILE_FORMAT_CSV (CSV dosyası).

    Bu dosyanın içeriği aşağıdaki biçimdedir:

    {"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
  • GeoJSON, KML veya CSV dosyasının yolunu belirten rawdata özelliği ekleyebilirsiniz.

Aşağıdaki istekte, iki öğenin yolunu belirtmek için curl -F seçeneği kullanılmaktadır dosyalar:

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"

Yanıt şu biçimdedir:

{
  "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER"
}

Veri işleme durumunu al

Yükleme işlemi eşzamansız olarak yapılır. Yani, yükleme işlemi için API çağrısından sonra daha sonra, sonuçları veri kümesinden başarılı olup olmadığını gösterir.

state değerini belirlemek için veri kümesi için Veri kümesi alma'yı kullanın. Örneğin veriler, işlendiğinde, state STATE_PROCESSING olarak ayarlanır. Veri kümesi hazır olduğunda uygulamanızda kullanmak üzere state, STATE_COMPLETED olarak ayarlandı.

Örneğin, veri kümesinde bir GET çağrısı yapın:

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"

Başarılı bir yükleme için veri kümesinin state öğesi STATE_COMPLETED şeklindedir:

{
  "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
}

Veri işleme başarısız olduğunda state, şundan farklı bir değere ayarlanır: STATE_COMPLETED; örneğin STATE_PUBLISHING_FAILED veya _FAILED dizesi.

Örneğin, verileri bir veri kümesine yükler ve ardından bir GET veri kümesi ayrıntılarını alma isteğinde bulunur. state özelliğiyle birlikte, yanıt, açıklama içeren tek bir errorMessage özelliği de içeriyor anlamına gelir.

{
  "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
}

Veri işleme hataları al

Veri kullanımı ve işleme başarısız olduğunda errorMessage mülkü bir ve hatayı açıklayan tek bir ileti görüntülenir. Ancak tek bir hata mesajı , sorunları tespit edip çözmek için yeterli bilgi sağlamalıdır.

Hata bilgilerinin tamamını almak için fetchDatasetErrors API'ye gidin. Bu API, bir veri kümesiyle ilişkili tüm veri işleme hatalarını döndürür:

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"

Yanıt, errors dizisini içerir. Bu dizide en fazla 50 adet hata bulunuyor Status yazın ve toplamda en fazla 500 hatayı destekler:

{
  "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)"
    },
    ...
  ]
}

Hata sayısı 50'den fazlaysa, yani birden fazla sayfa hatalarının ardından yanıt, nextPageToken alanında bir sayfa jetonu içerir. Aşağıdaki değeri, sonraki bir çağrının pageToken sorgu parametresine aktararak hata mesajını göreceksiniz. nextPageToken boş olduğunda başka sayfa olmaz.

Örneğin, önceki hata sayfasında bulunan jetonu kullanarak yanıt:

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"

Varsayılan olarak yanıt, sayfa başına en fazla 50 hata içerir. Tekliflerinizi otomatikleştirmek ve optimize etmek için sayfa boyutunu kontrol etmek için pageSize sorgu parametresini kullanın.

Veri kümesine yeni veri yükleme

Veri kümesini oluşturup ilk verileri başarıyla yükledikten sonra, durum veri kümesinin yüzdesi STATE_COMPLETED olarak ayarlandı. Bu, veri kümesinin elde edersiniz. Veri kümesinin state değerini belirlemek için veri kümesi bulunmalıdır.

Ayrıca, veri kümesine yeni veriler yükleyerek veri kümesiyle eşleştirilir. Yeni veri yüklemek için Veri yükleme işlemini izleyerek yeni verileri yükleyin. Cloud Storage'dan veya Bir dosyadan veri yükleyin, ve yüklenecek yeni verileri belirtin.

Yeni veriler başarıyla yüklenirse:

  • Veri kümesinin yeni sürümünün durumu STATE_COMPLETED olarak ayarlanır.

  • Yeni sürüm "etkin" hale gelir sürümünü temsil eder ve uygulamasını indirin.

Yükleme işleminde hata varsa:

  • Yeni veri kümesi sürümünün durumu, aşağıdaki durumlardan birine ayarlanır:

    • STATE_IMPORT_FAILED
    • STATE_PROCESSING_FAILED
    • STATE_PUBLISHING_FAILED
    • STATE_DELETION_FAILED
  • Önceki veri kümesinin başarılı sürümü "etkin" olarak kalır ve uygulamanızın kullandığı sürüm.