---
title: "datasets.UnmarshalDatapoint"
description: "Decode a raw protobuf datapoint into a JSON-like map using a dataset descriptor."
image: "https://tilebox.com/images/tilebox-docs-social-preview.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://tilebox.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# datasets.UnmarshalDatapoint

import { Fragment } from "astro/jsx-runtime";

import ApiReference from "@docs/components/ApiReference.astro";

import ParamField from "@docs/components/ParamField.astro";

```go
func UnmarshalDatapoint(
    descriptor *datasets.DatapointDescriptor,
    data []byte,
) (map[string]any, error)
```

Decode a raw protobuf datapoint into a JSON-like map using a dataset descriptor.

## Parameters

**descriptor**

type: *datasets.DatapointDescriptor

required: true

The descriptor returned by [`NewDatapointDescriptor`](/docs/api-reference/go/datasets/NewDatapointDescriptor).
**data**

type: []byte

required: true

The raw protobuf datapoint bytes returned by a datapoint query.

## Returns

A map of datapoint fields, or an error if the raw datapoint cannot be decoded.

<h2 id="request-example">Usage example</h2>

```go
descriptor, err := datasets.NewDatapointDescriptor(
    dataset,
)
if err != nil {
    return err
}

for data, err := range client.Datapoints.Query(ctx,
    dataset.ID,
    datasets.WithTemporalExtent(queryInterval),
) {
    if err != nil {
        return err
    }

    datapoint, err := datasets.UnmarshalDatapoint(
        descriptor,
        data,
    )
    if err != nil {
        return err
    }
    fmt.Println(datapoint["id"])
}
```

Source: https://tilebox.com/docs/api-reference/go/datasets/UnmarshalDatapoint/index.mdx
