# How do you make a very large map transform? (17K options)

**URL:** <https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851>\
**Category:** Ignition\
**Tags:** ignition81, perspective\
**Created:** [December 20, 2022, 8:15pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851 "2022-12-20T20:15:51Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Davis\_Hatrel](https://avatars.discourse-cdn.com/v4/letter/d/3e96dc/32.png) [@Davis\_Hatrel](https://forum.inductiveautomation.com/u/Davis_Hatrel)\
**Post date:** [December 20, 2022, 8:15pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/1 "2022-12-20T20:15:51Z")

</div>

I am trying to display the SPN (fault code standard for CAT engines) description in my project given the SPN number. Usually I would use a map transform on a binding to do something like this, but in this case there are 17K different possible fault codes that each have a unique description. So far I've tried pasting the list into VS code and formatting it like a map transform, but It wouldn't let me paste that as a binding onto the text property of a label. I've also tried to create a 2 column dataset with all the codes and their descriptions. This worked with a smaller test set that I tried, but would break when I tried to do all 17K rows. Does anyone else know of a better way to do something like this when you have a large number of mapped input/output pairs.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 20, 2022, 8:17pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/2 "2022-12-20T20:17:04Z")

</div>

Seems like storing these in a database and doing a query would be appropriate.

---

<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:** [December 20, 2022, 8:49pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/3 "2022-12-20T20:49:14Z")

</div>

Use a named query and enable caching.

---

<div class="post-metadata">

**Author:** ![Davis\_Hatrel](https://avatars.discourse-cdn.com/v4/letter/d/3e96dc/32.png) [@Davis\_Hatrel](https://forum.inductiveautomation.com/u/Davis_Hatrel)\
**Post date:** [December 20, 2022, 9:55pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/4 "2022-12-20T21:55:05Z")

</div>

Is there a way to do this on an Edge Gateway?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 20, 2022, 10:04pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/5 "2022-12-20T22:04:02Z")

</div>

Do you have the compute plugin for gateway scripting access?

---

<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:** [December 20, 2022, 10:07pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/6 "2022-12-20T22:07:53Z")

</div>

Consider constructing a static dataset in a memory tag. Then use the `lookup()` expression function.

---

<div class="post-metadata">

**Author:** ![Bart\_Pannemans](https://avatars.discourse-cdn.com/v4/letter/b/8797f3/32.png) [@Bart\_Pannemans](https://forum.inductiveautomation.com/u/Bart_Pannemans)\
**Post date:** [December 21, 2022, 8:23am UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/7 "2022-12-21T08:23:22Z")

</div>

I have used @pturmel's dataset memory tag solution before, works great, even with much larger datasets.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [December 21, 2022, 9:29pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/8 "2022-12-21T21:29:44Z")

</div>

What I would probably do is to use a dataset tag as phil suggests, but then create an expression tag in the UDT which does the lookup. Then you have a single tag you can reference everywhere with the fault code in it

---

<div class="post-metadata">

**Author:** ![Davis\_Hatrel](https://avatars.discourse-cdn.com/v4/letter/d/3e96dc/32.png) [@Davis\_Hatrel](https://forum.inductiveautomation.com/u/Davis_Hatrel)\
**Post date:** [December 21, 2022, 10:14pm UTC](https://forum.inductiveautomation.com/t/how-do-you-make-a-very-large-map-transform-17k-options/67851/9 "2022-12-21T22:14:19Z")

</div>

The dataset method ended up working for me. I thought 17K might have just been to large for that method when it didn't work initially, but apparently there were quotation marks in a few of the fault descriptions that were messing it up. Once I fixed those it handled the 17K perfectly fine.
