Old thread, but it’s the first one that shows up when googling “unreal data asset vs data table” so I wanted to share my experience with them.
tldr: DataTables are easier to work with, but DataAssets are much more stable (in my experience)
I’ve personally found that DataAssets are much more stable. During the multiple times I’ve tried to use Structs + DataTables, Unreal semi-frequently crashed when I tried to add/remove/change the properties in the struct, and in some rare cases, my project would become completely bricked and crash on startup everytime, to which I had to use source control to revert back to a previous version of the project. I verified that the commit that caused it to become bricked was the one where I changed a single default value in the struct used in a DataTable.
This is conjecture, but based on my own experiences and some loose research online, I believe unreal has a lot of trouble handling structs that contain user-defined properties, like non-engine blueprints and other user-defined structs. If the struct ONLY contains basic properties (like ints, floats, strings, etc), its been a lot more stable in my experience.
DataAssets, on the other hand, have been rock solid for me. I’ve never noticed any correlation between me messing with PrimaryDataAssets/DataAssets and unreal crashing, whereas with Structs/DataTables I noticed it all the time.
While they are more stable, it is slightly more cumbersome to edit the values of a particular DataAsset you want to, since you have to open the data asset directly. There is no nice table to look at and quickly change the values you want to change.
It’s also harder to get a reference to all of the data assets at runtime; DataTables have the really convenient “Get Data Table Row” and “Get Data Table Row Names” nodes, while DataAssets have… nothing, as far as I know. The only way I was able to get a reference to all of the item data assets in my project was to do some weird crap like this:
It gets the job done, but it feels really awkward to have to do. It’d be awesome if PrimaryDataAssets had a node like “Get All Data Assets” or something.
Hope this helps someone out there make up their mind on which to use 