> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/function-blocks/blocks-reference/data-logic/referencing/data-read-global.md).

# Data Read Global

This function block reads a value stored in the global data storage of the current project scene. Use it when you need to retrieve data that was saved elsewhere and share it across different parts of your scenario.

## 📥 Inputs <a href="#inputs" id="inputs"></a>

This function block does not have any input sockets.

## 📤 Outputs <a href="#outputs" id="outputs"></a>

`Generic` On evaluation this output provides the value associated with the requested global key. If the key is not found a fallback or warning will be produced (see Troubleshooting).

## 🕹️ Controls <a href="#controls" id="controls"></a>

`Data Key` Enter the name of the global data key you want to read.

## 🎯 Features <a href="#features" id="features"></a>

* Read from global storage that can be accessed from other blocks and scenes.
* Autocomplete support for existing global keys to reduce typing errors.
* Emits a single `Generic` output that can contain any supported data type.

## 📊 Evaluation <a href="#evaluation" id="evaluation"></a>

When the scenario runs, the block looks up the provided `Data Key` in the global storage and returns the stored value on the `Generic` output. If the key is missing, a warning is issued and a placeholder value is returned.

## 📝 Usage Instructions <a href="#usage" id="usage"></a>

1. Provide the exact key name in the `Data Key` control.
2. Place this block where you need to consume globally stored data.
3. Use the `Generic` output as input to the block that needs the data.

## 💡 Tips and Tricks <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* To store values for later retrieval, use the `Data Write Global` block together with this block.
* If you need temporary or loop-local storage instead, consider using `Data Read Local` and `Data Write Local` for more isolated data flow.
* Combine with `Is None` or `Replace None` when the key may be missing, so your scenario can provide default values.
* Use `Data Memory` when you want to freeze a value in memory until explicitly updated.
* For debugging, route the output into `Debug Input` to inspect retrieved values in the log.
* To export retrieved values in structured form, pair with `Data to JSON` or `CSV Export`.

## 🛠️ Troubleshooting <a href="#troubleshooting" id="troubleshooting"></a>

* `No value returned` Check that the `Data Key` exactly matches the key used when writing the data. Typo is the most common cause.
* `Key not found` If you see a warning about a missing key, confirm that the block that wrote the data ran earlier in the scenario, and consider using `Data Write Global` to create the key before reading.
* `Unexpected data type` If the consuming blocks expect a specific data type, validate the retrieved value with `Data Type Converter` or handle missing/incorrect types with `Replace None`.

## ✅ Best Practices <a href="#best-practices" id="best-practices"></a>

* Use clear, descriptive key names to avoid collisions (for example include scene or subsystem prefixes).
* When designing loops or parallel flows, prefer local storage where possible to avoid race conditions; use global storage only when intentional cross-scope sharing is required.
* Protect reads with checks like `Is None` to make your flows robust against missing data.
