Veri kümesi oluştur

Veri kümesi oluşturma iki adımlı bir süreçtir:

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

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

İlk veri yüklemesinden sonra, veri kümesinin yeni bir sürümünü oluşturmak için veri kümesine yeni veriler yükleyebilirsiniz.

Veri kümesini oluşturma

Veri kümeleri uç noktasına POST isteği göndererek veri kümesi oluşturun:

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

Veri kümesini tanımlayan isteğe bir JSON gövdesi iletin. Bu politika uyarınca:

  • Veri kümesinin displayName özelliğini 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ıtta, veri kümesinin kimliği projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID biçiminde ve ek bilgilerle birlikte yer alır. Veri kümesini güncelleme veya değiştirme isteklerinde veri kümesi kimliğini kullanın.

{
  "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'daki veya yerel bir dosyada bulunan verileri veri kümesine yükleyin.

Yükleme işlemi eşzamansızdır. Verileri yükledikten sonra veriler alınır ve işlenir. Bu nedenle, veri kümesinin durumunu izlemek için bir HTTP GET isteği göndermeniz gerekir. Böylece veri kümesinin kullanıma hazır olup olmadığını veya herhangi bir hata olup olmadığını belirleyebilirsiniz. Daha fazla bilgi için Veri işleme durumunu alma başlıklı makaleyi inceleyin.

Cloud Storage'dan veri yükleme

Aşağıdaki gibi bir POST isteğini datasets uç noktasına göndererek Cloud Storage'dan veri kümenize yükleme yaparsınız. Bu istek, veri kümesinin kimliğini de içerir:

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

JSON istek gövdesinde:

  • Cloud Storage'daki verileri içeren kaynağın dosya yolunu belirtmek için inputUri kullanın. Bu yol, gs://GCS_BUCKET/FILE biçimindedir.

    İsteği gönderen kullanıcının Storage Object Viewer rolüne veya storage.objects.get iznini içeren başka bir role sahip olması gerekir. Cloud Storage'a erişimi yönetme hakkında daha fazla bilgi için Erişim denetimine genel bakış başlıklı makaleyi inceleyin.

  • Verilerin dosya biçimini belirtmek için fileFormat simgesini 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 datasets uç noktasına bir HTTP POST isteği gönderin. Bu istek, veri kümesinin kimliğini de içerir::

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

İstek şunları içerir:

  • Goog-Upload-Protocol üstbilgisi multipart olarak ayarlanır.

  • Yüklenecek veri türünü belirten bir dosyanın yolunu belirten metadata özelliği. Bu dosya FILE_FORMAT_GEOJSON (GeoJSON dosyası), FILE_FORMAT_KML (KML dosyası) veya FILE_FORMAT_CSV (CSV dosyası) olabilir.

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

    {"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
  • Yüklenecek verileri içeren GeoJSON, KML veya CSV dosyasının yolunu belirten rawdata özelliği.

Aşağıdaki istekte, iki dosyanın yolunu belirtmek için curl -F seçeneği kullanılıyor:

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 alma

Yükleme işlemi eşzamansızdır. Bu nedenle, verileri veri kümesine yüklemek için yapılan API çağrısı döndükten sonra veri alımının ve işlenmesinin başarılı mı yoksa başarısız mı olduğunu belirlemek için veri kümesini yoklamanız gerekir.

Veri kümesinin state değerini belirlemek için Veri kümesi alma'yı kullanın. Örneğin, veriler işlenirken state, STATE_PROCESSING olarak ayarlanır. Veri kümesi uygulamanızda kullanıma hazır olduğunda state, STATE_COMPLETED olarak ayarlanır.

Örneğin, veri kümesinde 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 değeri STATE_COMPLETED olmalıdır:

{
  "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, STATE_COMPLETED dışında bir değere (ör. STATE_PUBLISHING_FAILED) veya _FAILED dizesiyle biten herhangi bir duruma ayarlanır.

Örneğin, bir veri kümesine veri yüklersiniz ve ardından veri kümesi ayrıntılarını almak için bir GET isteği gönderirsiniz. Yanıt, state özelliğinin yanı sıra hatanın açıklamasını içeren tek bir errorMessage özelliği de içerir.

{
  "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ını alma

Veri alımı ve işleme başarısız olduğunda errorMessage özelliği, hatayı açıklayan tek bir mesaj içerir. Ancak tek bir hata mesajı, sorunları belirleyip düzeltmek için yeterli bilgiyi sağlamayabilir.

Hata bilgilerinin tamamını almak için fetchDatasetErrors API'sini çağırın. 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ıtta errors dizisi var. Bu dizi, çağrı başına Status türünde en fazla 50 hata içerir 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)"
    },
    ...
  ]
}

50'den fazla hata varsa (yani birden fazla sayfa hata varsa) yanıtta nextPageToken alanında bir sayfa jetonu bulunur. Hataların bir sonraki sayfasını almak için sonraki bir get() çağrısının pageToken sorgu parametresinde bu değeri iletin. nextPageToken boş olduğunda başka sayfa yoktur.

Örneğin, önceki yanıttaki jetonu kullanarak hataların bir sonraki sayfasını almak için:

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ıtta sayfa başına en fazla 50 hata bulunur. Sayfa boyutunu kontrol etmek için pageSize sorgu parametresini kullanın.

Veri kümesine yeni veriler yükleme

Veri kümesini oluşturup ilk verileri başarıyla yükledikten sonra veri kümesinin durumu STATE_COMPLETED olarak ayarlanır. Bu, veri kümesinin uygulamanızda kullanıma hazır olduğu anlamına gelir. Veri kümesinin state değerini belirlemek için Veri kümesi alma başlıklı makaleyi inceleyin.

Veri kümesinin yeni bir sürümünü oluşturmak için veri kümesine yeni veriler de yükleyebilirsiniz. Yeni verileri yüklemek için Cloud Storage'dan veri yükleme veya Dosyadan veri yükleme işleminde kullandığınız yöntemi kullanın 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" sürüm haline gelir ve uygulamanız tarafından kullanılan sürüm olur.

Yükleme sırasında hata oluşursa:

  • 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ümesi başarılı sürümü "etkin" sürüm olarak kalır ve uygulamanız tarafından kullanılan sürümdür.