# Transform (Perspective) In Vision

**URL:** <https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962>\
**Category:** Ignition\
**Tags:** ignition81, vision, perspective\
**Created:** [November 5, 2025, 3:14pm UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962 "2025-11-05T15:14:17Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pat\_Cunningham](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pat_cunningham/32/57710_2.png) [@Pat\_Cunningham](https://forum.inductiveautomation.com/u/Pat_Cunningham)\
**Post date:** [November 5, 2025, 3:14pm UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962/1 "2025-11-05T15:14:17Z")

</div>

In Perspective you can bind to a tag and then Transform the value using a script. I am trying to figure out how to do something similar in Vision. I have a tag that is an integer and I have a dataset. I need to use the integer value to lookup a string value in the dataset. The lookup script is written and works fine in Perspective. I feel like it is something simple that I am missing.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [November 5, 2025, 3:21pm UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962/2 "2025-11-05T15:21:32Z")

</div>

The only way to perform a “transform” in vision similar to what is present in perspective is to use the `transform` expression in Phil’s Integration Toolkit module.

However, I think you’re making it more complex than it really needs to be. Create a custom property, probably on the root container, and the use an expression binding with a `lookup()` expression to pull the value out of the dataset. The. You can reference that property anywhere you need in the window.

---

<div class="post-metadata">

**Author:** ![Pat\_Cunningham](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pat_cunningham/32/57710_2.png) [@Pat\_Cunningham](https://forum.inductiveautomation.com/u/Pat_Cunningham)\
**Post date:** [November 5, 2025, 7:12pm UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962/3 "2025-11-05T19:12:25Z")

</div>

I will try that. Is there a way to do it with scripting without using an expression?

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [November 5, 2025, 7:20pm UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962/4 "2025-11-05T19:20:42Z")

</div>

Any reason why you are shying away from expressions? Expressions are markedly more performant than scripts.

> [@Pat\_Cunningham](#):
>
> I have a tag that is an integer and I have a dataset. I need to use the integer value to lookup a string value in the dataset.

There is an expression function for exactly this, [`lookup`](https://www.docs.inductiveautomation.com/docs/8.1/appendix/expression-functions/logic/lookup).

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [November 5, 2025, 7:37pm UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962/5 "2025-11-05T19:37:23Z")

</div>

Of course, but my initial response would be why?

Obviously I don't know the context of what else is going on. In a script context this is a simple as reading the tag value and then filtering the dataset for the value you are looking for (probably with a named query).

That however is realtively poor advice.

1. This feels like a side effect, which generally should be avoided.
2. Scripts should be the last resort, pure bindings and expressions should be the go to. See @ryan.white's post for the reason.
3. There is an expression that does exactly (what I believe) you're looking for.

Can you provide a little more context to the problem you're trying to solve?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [November 5, 2025, 8:32pm UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962/6 "2025-11-05T20:32:45Z")

</div>

In case the replies haven't made clear, using a script to do this is a mistake, even in Perspective. Use the native `lookup()` expression function in an expression binding.

(Perspective's conveniences are often big sledgehammers with which to bash your thumb. Script transforms are an example. Use only as a last resort.)

---

<div class="post-metadata">

**Author:** ![Pat\_Cunningham](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pat_cunningham/32/57710_2.png) [@Pat\_Cunningham](https://forum.inductiveautomation.com/u/Pat_Cunningham)\
**Post date:** [November 6, 2025, 11:43am UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962/7 "2025-11-06T11:43:14Z")

</div>

The script that I need to run is what gives me the table that I need to use for the lookup.

I figured out how to do what I wanted.

1. I created a custom property on the control that is affected
2. Linked that property to the index
3. Created a propertyChange script that does the lookup and populates the text field

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [November 9, 2025, 10:09am UTC](https://forum.inductiveautomation.com/t/transform-perspective-in-vision/111962/8 "2025-11-09T10:09:17Z")

</div>

How is that table generated ?  
In any case, you can probably store that table into another custom property, then reference it in your lookup expression.

If you can’t and you really need a script, I’d suggest creating a translation function in your script library, then calling it with `runScript` in an expression binding, passing it the prop that gets the tag value as parameter.

I like to keep the property change scripts for side effects of changes, and use bindings for the values pipelines, even when it means adding intermediate properties.
