从Tableau 8.1访问OData Feed时,OData格式不正确

我无法连接到OData提要,因为我得到这个错误消息:“不良OData格式。请确保您使用的URL指向一个有效的OData来源”

我可以在浏览器中访问url(并获得预期的JSON响应),并且可以通过Excel(Power Query)连接到OData feed。

有没有人有类似的问题? 你认为这个问题是什么?

我在Windows 8上使用Tableau 8.1,并通过ASP.NET Web API 2开发我的OData服务。

使用Web API OData时,Tableau版本9.0仍然存在此问题,因为Tableau要求数据为XML格式,但不发送Accept头让服务器知道。

这是为我工作的。 我修改这个代码(replaceYourDatabaseEntities和YourTable),并为Microsoft脚手架创build的每个控制器添加它:

/// <summary> /// Class YourTableController. /// </summary> public class YourTableController : ODataController { /// <summary> /// The database /// </summary> private YourDatabaseEntities db = new YourDatabaseEntities(); /// <summary> /// Adds Accept header for Tableau which requires XML data but doesn't send a header requesting it /// </summary> protected void FTLP() { try { Request.Headers.Remove("Accept"); } catch { } try { Request.Headers.Add("Accept", "application/atom+xml"); } catch { } } // GET: odata/YourTable /// <summary> /// Gets the Your Table. /// </summary> /// <returns>IQueryable&lt;YourTable&gt;.</returns> [EnableQuery] public IQueryable<YourTable> GetYourTable() { FTLP();//Add this to Fix Tableau XML requirement return db.YourTable; } // GET: odata/YourTable(5) /// <summary> /// Gets the YourTable. /// </summary> /// <param name="key">The key.</param> /// <returns>SingleResult&lt;YourTable&gt;.</returns> [EnableQuery] public SingleResult<YourTable> GetYourTable([FromODataUri] DateTime key) { FTLP();//Add this to Fix Tableau XML requirement return SingleResult.Create(db.YourTable.Where(YourTable => YourTable.Date == key)); } 

///////

有两个选项可以解决这个问题:

  1. 将“application / json”添加到Accept标头。
  2. 追加$格式到原始URL,例如〜/ Employees?$ format = application / json

现在在最新的ODL(6.3)中,除了元数据文档之外,只有json支持有效载荷。

检查Tableau日志中的错误消息: 我的文档>我的Tableau存储库>日志> log.txt

在我们的例子中,我们看到Tableau将$ inlinecount = allpages附加到OData URL中,在OData v4中失败:

{“error”:{“code”:null,“message”:“系统查询选项”$ inlinecount“未定义。

Tableau仅支持OData v2。 Denodo可以支持这两个版本。 我们安装了V2,我们能够成功连接。 以下是来自Tableau支持部门的反馈:

根据Microsoft的这篇文章,inlinecount函数不包括在OData版本4中: https ://msdn.microsoft.com/en-us/library/dd942040.aspx。 这是Tableau Desktop无法连接到该版本的OData的原因之一。

我可以find唯一的loggingOData V2要求的Tableau文档是这样的:

Tableau连接到OData V2,不支持浏览OData服务文档。 http://onlinehelp.tableau.com/current/pro/online/windows/en-us/help.htm#examples_odata.html

我们原先关心的是基于其他答案的json与primefaces格式,但这对我们来说不是问题。 一旦我们得到了连接的工作,我们意识到Tableau不能使用OData的实时连接,所以我们还是恢复到ODBC!

TL; DR确保您使用的是OData V2,而不是使用OData服务文档(截至2016年8月,Tableau v 9.3.5及更低版本)。