Tạo tập dữ liệu là quy trình gồm hai bước:
Đưa ra yêu cầu tạo tập dữ liệu.
Tạo yêu cầu tải dữ liệu lên tập dữ liệu.
Sau lần tải dữ liệu ban đầu lên, bạn có thể tải dữ liệu mới lên tập dữ liệu để tạo phiên bản mới của tập dữ liệu.
Tạo tập dữ liệu
Tạo tập dữ liệu bằng cách gửi yêu cầu POST
đến
điểm cuối tập dữ liệu:
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets
Truyền nội dung JSON cho yêu cầu xác định tập dữ liệu. Bạn phải:
Chỉ định
displayName
của tập dữ liệu. Giá trị củadisplayName
phải là duy nhất cho mọi tập dữ liệu.Đặt
usage
thànhUSAGE_DATA_DRIVEN_STYLING
.
Ví dụ:
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"
Câu trả lời có chứa mã nhận dạng tập dữ liệu, ở dạng
projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID
cùng với thông tin bổ sung. Sử dụng mã nhận dạng tập dữ liệu khi đưa ra yêu cầu để
cập nhật hoặc sửa đổi tập dữ liệu.
{ "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" }
Tải dữ liệu lên tập dữ liệu
Sau khi bạn tạo tập dữ liệu, hãy tải dữ liệu lên từ Bộ nhớ Google Cloud hoặc từ một tệp cục bộ vào tập dữ liệu.
Hoạt động tải lên không đồng bộ. Sau khi bạn tải dữ liệu lên, dữ liệu sẽ được nhập và xử lý. Điều đó có nghĩa là bạn phải gửi một yêu cầu HTTP GET để giám sát trạng thái của tập dữ liệu để xác định thời điểm tập dữ liệu đã sẵn sàng để sử dụng hoặc có bất kỳ lỗi nào không. Để biết thêm thông tin, hãy xem bài viết Nhận chế độ xử lý dữ liệu trạng thái.
Tải dữ liệu lên từ Cloud Storage
Bạn tải từ Cloud Storage lên tập dữ liệu bằng cách gửi yêu cầu POST
đến
tập dữ liệu điểm cuối cũng
bao gồm mã nhận dạng của tập dữ liệu:
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
Trong nội dung yêu cầu JSON:
Sử dụng
inputUri
để chỉ định đường dẫn tệp đến tài nguyên chứa dữ liệu trong Cloud Storage. Đường dẫn này có trong biểu mẫugs://GCS_BUCKET/FILE
.Người dùng đưa ra yêu cầu sẽ yêu cầu Đối tượng bộ nhớ Người xem hoặc bất kỳ vai trò nào khác có quyền
storage.objects.get
. Cho biết thêm thông tin về cách quản lý quyền truy cập vào Cloud Storage, hãy xem Tổng quan về tính năng kiểm soát quyền truy cập.Sử dụng
fileFormat
để chỉ định định dạng tệp của dữ liệu:FILE_FORMAT_GEOJSON
(tệp GeoJson),FILE_FORMAT_KML
(tệp KML) hoặcFILE_FORMAT_CSV
(tệp CSV).
Ví dụ:
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"
Câu trả lời có dạng:
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER" }
Tải dữ liệu lên từ một tệp
Để tải dữ liệu lên từ một tệp, hãy gửi yêu cầu HTTP POST
đến
tập dữ liệu điểm cuối cũng
bao gồm mã nhận dạng của tập dữ liệu::
https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
Yêu cầu chứa:
Tiêu đề
Goog-Upload-Protocol
được đặt thànhmultipart
.Thuộc tính
metadata
chỉ định đường dẫn đến một tệp chỉ định giá trị loại dữ liệu cần tải lên, như:FILE_FORMAT_GEOJSON
(tệp GeoJSON),FILE_FORMAT_KML
(tệp KML) hoặcFILE_FORMAT_CSV
(tệp CSV).Nội dung của tệp này có định dạng sau:
{"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
Thuộc tính
rawdata
chỉ định đường dẫn đến tệp GeoJSON, KML hoặc CSV chứa dữ liệu cần tải lên.
Yêu cầu sau đây sử dụng tuỳ chọn curl -F
để chỉ định đường dẫn đến
tệp:
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"
Câu trả lời có dạng:
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER" }
Xem trạng thái xử lý dữ liệu
Hoạt động tải lên không đồng bộ. Tức là sau lệnh gọi API để tải lên dữ liệu mà tập dữ liệu trả về, sau đó bạn phải thăm dò tập dữ liệu để xác định xem việc nhập và xử lý dữ liệu thành công hay không thành công.
Để xác định state
của
tập dữ liệu, hãy sử dụng Lấy tập dữ liệu. Ví dụ: trong khi dữ liệu đang được
đã xử lý, state
được đặt thành STATE_PROCESSING
. Khi tập dữ liệu đã sẵn sàng
để dùng trong ứng dụng, state
được đặt thành STATE_COMPLETED
.
Ví dụ: thực hiện lệnh gọi GET trên tập dữ liệu:
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"
Để tải lên thành công, state
của tập dữ liệu là 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 }
Khi xử lý dữ liệu không thành công, state
được đặt thành một giá trị không phải là
STATE_COMPLETED
, chẳng hạn như STATE_PUBLISHING_FAILED
hoặc bất kỳ trạng thái nào kết thúc bằng
chuỗi _FAILED
.
Ví dụ: bạn tải dữ liệu lên một tập dữ liệu, sau đó thực hiện hàm GET
yêu cầu lấy thông tin chi tiết về tập dữ liệu. Cùng với thuộc tính state
,
Nội dung phản hồi cũng bao gồm một thuộc tính errorMessage
duy nhất có chứa nội dung mô tả
lỗi.
{ "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 }
Nhận lỗi xử lý dữ liệu
Khi nhập và xử lý dữ liệu không thành công, tài sản errorMessage
sẽ chứa một
thông báo mô tả lỗi. Tuy nhiên, một thông báo lỗi thì không
nhất thiết phải cung cấp đủ thông tin để xác định và khắc phục vấn đề.
Để biết thông tin đầy đủ về lỗi, hãy gọi
fetchDatasetErrors
API. API này trả về tất cả các lỗi xử lý dữ liệu liên quan đến một tập dữ liệu:
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"
Phản hồi chứa mảng errors
. Mảng này chứa tối đa 50 lỗi của
loại Status
mỗi lệnh gọi và hỗ trợ tối đa 500 lỗi tổng cộng:
{ "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)" }, ... ] }
Nếu có hơn 50 lỗi, tức là có nhiều trang
thì phản hồi sẽ chứa mã thông báo trang trong trường nextPageToken
.
Truyền giá trị đó vào tham số truy vấn pageToken
của lệnh gọi tiếp theo để lấy
trang lỗi tiếp theo. Khi nextPageToken
trống sẽ không có trang nào khác.
Ví dụ: để lấy mã lỗi từ trang tiếp theo trả lời:
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"
Theo mặc định, phản hồi chứa tối đa 50 lỗi trên mỗi trang. Sử dụng
tham số truy vấn pageSize
để kiểm soát kích thước trang.
Tải dữ liệu mới lên tập dữ liệu
Sau khi bạn tạo tập dữ liệu và tải lên dữ liệu ban đầu thành công, trạng thái
của tập dữ liệu được đặt thành STATE_COMPLETED
. Điều đó có nghĩa là tập dữ liệu đã sẵn sàng
sử dụng trong ứng dụng của bạn. Để xác định state
của tập dữ liệu, hãy xem phần Nhận
.
Bạn cũng có thể tải dữ liệu mới lên tập dữ liệu để tạo phiên bản mới của tập dữ liệu. Để tải dữ liệu mới lên, hãy sử dụng quy trình tương tự như bạn đã làm để Tải dữ liệu lên từ Cloud Storage hoặc Tải dữ liệu lên từ tệp, và chỉ định dữ liệu mới cần tải lên.
Nếu dữ liệu mới được tải lên thành công:
Trạng thái của phiên bản mới của tập dữ liệu được đặt thành
STATE_COMPLETED
.Phiên bản mới sẽ trở thành "đang hoạt động" và là phiên bản được sử dụng bởi .
Nếu có lỗi khi tải lên:
Trạng thái của phiên bản tập dữ liệu mới được đặt thành một trong các trạng thái sau:
STATE_IMPORT_FAILED
STATE_PROCESSING_FAILED
STATE_PUBLISHING_FAILED
STATE_DELETION_FAILED
Phiên bản thành công của tập dữ liệu trước đó vẫn là phiên bản "đang hoạt động" và là phiên bản mà ứng dụng của bạn sử dụng.