# Checking if variable is a DataSet in a script

**URL:** <https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077>\
**Category:** Ignition\
**Tags:** scripting\
**Created:** [August 1, 2019, 12:08pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077 "2019-08-01T12:08:21Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![md.szyman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/md.szyman/32/9240_2.png) [@md.szyman](https://forum.inductiveautomation.com/u/md.szyman)\
**Post date:** [August 1, 2019, 12:08pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/1 "2019-08-01T12:08:21Z")

</div>

So I’m not very familiar with Jython and how I can do certain things, hence the probably basic question.

I want to ensure that the parameter being passed to a function is either a Dataset or a PyDataSet, but checking the type of a Dataset returns `<type 'com.inductiveautomation.ignition.common.BasicDataset'>` and I can’t seem to find a way to actually compare the type of a variable to this. `isinstance(dataset, com.inductiveautomation.ignition.common.BasicDataset)` just gives an error: “name ‘com’ is not defined”.

Is there something simple I’m missing?

---

<div class="post-metadata">

**Author:** ![JGJohnson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jgjohnson/32/29582_2.png) [@JGJohnson](https://forum.inductiveautomation.com/u/JGJohnson)\
**Post date:** [August 1, 2019, 12:43pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/2 "2019-08-01T12:43:44Z")

</div>

```auto
from com.inductiveautomation.ignition.common import BasicDataset
ds = system.dataset.toDataSet(["columnOne", "columnTwo"], [[1, 2]])
print isinstance(ds, BasicDataset)

```

---

<div class="post-metadata">

**Author:** ![md.szyman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/md.szyman/32/9240_2.png) [@md.szyman](https://forum.inductiveautomation.com/u/md.szyman)\
**Post date:** [August 1, 2019, 12:44pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/3 "2019-08-01T12:44:51Z")

</div>

Awesome, thank you!

---

<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:** [August 1, 2019, 12:45pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/4 "2019-08-01T12:45:23Z")

</div>

I don’t know what your intentions are, but if you want to accept any dataset type you should compare against `com.inductiveautomation.ignition.common.Dataset`.

---

<div class="post-metadata">

**Author:** ![md.szyman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/md.szyman/32/9240_2.png) [@md.szyman](https://forum.inductiveautomation.com/u/md.szyman)\
**Post date:** [August 1, 2019, 12:45pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/5 "2019-08-01T12:45:58Z")

</div>

Does that include PyDatasets?

I basically just want to do this:

1. If it’s a PyDataset, pass it along as is to the rest of the function.
2. If it’s a dataset that can be converted to a PyDataset, convert it first.

---

<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:** [August 1, 2019, 12:53pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/6 "2019-08-01T12:53:59Z")

</div>

`PyDataSet` does implement `Dataset`, you’ll just need 2 checks.

3 possibilities:

1. not a Dataset at all
2. a Dataset, but not a PyDataSet
3. a PyDataSet

---

<div class="post-metadata">

**Author:** ![md.szyman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/md.szyman/32/9240_2.png) [@md.szyman](https://forum.inductiveautomation.com/u/md.szyman)\
**Post date:** [August 1, 2019, 12:55pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/7 "2019-08-01T12:55:08Z")

</div>

Sorry to keep adding on questions, but how do I check for if it’s a PyDataSet? The type of a PyDataSet appears to be `<type 'com.inductiveautomation.ignition.common.script.builtin.DatasetUtilities$PyDataSet'>` which raises syntax errors when I try to compare against it because of that $.

---

<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:** [August 1, 2019, 1:00pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/8 "2019-08-01T13:00:01Z")

</div>

Hmm. I don’t know offhand… try replacing the “$” with a “.”:

```auto
from com.inductiveautomation.ignition.common.script.builtin import DatasetUtilities

isinstance(ds, DatasetUtilities.PyDataSet)

```

---

<div class="post-metadata">

**Author:** ![md.szyman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/md.szyman/32/9240_2.png) [@md.szyman](https://forum.inductiveautomation.com/u/md.szyman)\
**Post date:** [August 1, 2019, 1:01pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/9 "2019-08-01T13:01:03Z")

</div>

Seems like that did the trick!

---

<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:** [August 1, 2019, 1:02pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/10 "2019-08-01T13:02:32Z")

</div>

I wonder if `toPyDataSet` should just be smart enough to do no work if passed a `PyDataSet` and simply return it.

(it’s not, pondering a future change though)

---

<div class="post-metadata">

**Author:** ![md.szyman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/md.szyman/32/9240_2.png) [@md.szyman](https://forum.inductiveautomation.com/u/md.szyman)\
**Post date:** [August 1, 2019, 1:04pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/11 "2019-08-01T13:04:54Z")

</div>

It seems to work for me?

```auto
pySet = system.dataset.toPyDataSet(ds)
pypyset = system.dataset.toPyDataSet(pySet)

isinstance(pySet, DatasetUtilities.PyDataSet) #=> True
isinstance(pypyset, DatasetUtilities.PyDataSet) #=> True

```

And I don’t get any errors.

---

<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:** [August 1, 2019, 1:05pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/12 "2019-08-01T13:05:21Z")

</div>

Yeah it should work it’s just not as efficient as it could be.

---

<div class="post-metadata">

**Author:** ![md.szyman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/md.szyman/32/9240_2.png) [@md.szyman](https://forum.inductiveautomation.com/u/md.szyman)\
**Post date:** [August 1, 2019, 1:06pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/13 "2019-08-01T13:06:03Z")

</div>

Alright cool, thanks!

I’ll just check if it’s a Dataset and then run `toPyDataset` regardless and that’ll be it. Thanks again!

---

<div class="post-metadata">

**Author:** ![flavien](https://avatars.discourse-cdn.com/v4/letter/f/f475e1/32.png) [@flavien](https://forum.inductiveautomation.com/u/flavien)\
**Post date:** [April 26, 2021, 1:01pm UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/14 "2021-04-26T13:01:06Z")

</div>

Hi

Do you have a solution for type BasicStreamingDataset ?

---

<div class="post-metadata">

**Author:** ![flavien](https://avatars.discourse-cdn.com/v4/letter/f/f475e1/32.png) [@flavien](https://forum.inductiveautomation.com/u/flavien)\
**Post date:** [July 21, 2021, 9:23am UTC](https://forum.inductiveautomation.com/t/checking-if-variable-is-a-dataset-in-a-script/27077/15 "2021-07-21T09:23:47Z")

</div>

Hi,

Do you have the solution for objects (org.python.core.PyUnicode) ?
