I started using the Extract API with the original beta during 8.0 development.
It worked but was limited.
Later on when the SDK came out, incorporated the Extract API and added the Server API I was thrilled.
Below I will use:
SDK for the Tableau SDK
SDK-EA for the Extract API of the Tableau SDK
SDK-SA for the Server API of the Tableau SDK
EA2 for the Extract API 2.0
Up until very recently I've been happy with the SDK but recently ran into problem when doing impersonation in threads trying to use the SDK.
See this post:
And most recently I've been attempting to use the new EA2 to produce Hyper format extracts.
It works on its own, but seems to have the same issue SDK as above, and has DLL overlap with the SDK but uses different versions.
I have successfully used both the SDK and the EA2 in the same program. I had to place the DLLs for each in different folders than the app, and put them on the PATH with the EAP folder listed first. It only works because the TableauCommon, ..., and the other (3rd party?) DLLs that match in name seem to be backward compatible.
But things are still lacking.
1) the issue with impersonation really needs to be fixed.
2) the SDK needs to be updated to be built using the same DLLs as the EA2
3) the SDK-SA will not publish a Hyper extract which will be a big problem in the future.Yes, I know there is a REST API that likely can do this, but I am not a web programmer and have no idea how to use it, so the SDK-SA is very important to devs like myself.
Interestingly when use SDK-SA to publish a TDE extract to a 10.5 server, the file on the server says it is in Hyper format so it must be upgraded as it is published. That seems great, but the Server API insists on always tacking ".tde" onto the end of the name as it is published. I tried naming it "MyExtract.hyper" and in the server it was "MyExtract.hyper.tde".
Tableau needs to update the SDK-SA to be able to handle both/either TDE and/or Hyper extracts as my customers may or may not be on Tableau 10.5
4) Since there is significant overlap between the SDK-EA and the EA2 why wasn't it just added to the SDK? I think it should be.
In my own code I managed merge the EA2 classes together with the SDK classes using abstract base classes to define the interface common between the SDK-EA classes and the EA2 classes, then using namespaces to keep the actual implementations of each separate. It goes a bit further than that, but you get the idea. The best part is, only 1 line of code is different for creating a Hyper or TDE extract. All the rest hold the objects using base class types and the virtual methods just do the right thing.
FYI, my original Tableau Community posting with C# port of the SDK and later updated to add the Extract API 2.0 for Hyper files was in a section of the community from Tableau 8.0 and has been deleted.
Please see my new post with the latest version of the code at: