1

我正在尝试通过 Zuora REST API 执行一些 ZOQL。

我已经参考了这个文档,我正在使用 REST 端点 v1/action/query 来执行 ZOQL。

首先我尝试了非常简单的请求并得到了结果

{
  "queryString": "select AccountId, FirstName, LastName from contact"
}

现在我尝试使用星号进行查询,如下所示

{
  "queryString": "select * from contact"
}

但我得到以下错误

{
  "faultcode": "fns:MALFORMED_QUERY",
  "faultstring": "You have an error in your ZOQL syntax",
  "detail": {
    "MalformedQueryFault": {
      "FaultCode": "MALFORMED_QUERY",
      "FaultMessage": "You have an error in your ZOQL syntax"
    }
  }
}

这里,我发现 ZOQL 支持星号。对于涉及多个对象的 ZOQL,我什至遇到了同样的错误。像

SELECT Subscription.Name, Account.Name FROM Subscription WHERE Subscription.Status='Active' AND DefaultPaymentMethod.CreditCardType='Visa'

编辑 上述查询在 Zuora SOAP API 中也不起作用

如何在 Zuora REST API 或 Zuora SOAP API 中使用星号执行查询?

4

2 回答 2

2

在 ZOQL 中使用 Asterix 进行查询:

简而言之:您不能使用asterix。

更多信息:

来自 Zuora知识中心:

不支持通配符

不能将星号通配符 (*) 用于带有 query() 调用的字段名称。您必须明确指定字段名称。

您提到的上述说明您可以使用 asterix 的来源不是关于ZOQL,而是关于Export ZOQL

导出 ZOQLZOQ不同,如上述文档中所述:

Zuora 导出 ZOQL(Zuora 对象查询语言)是用于使用 Zuora SOAP API 中的导出对象创建导出的查询语言。Zuora Export ZOQL 与我们一般的 ZOQL 类似,但有一些不同。最大的区别在于,使用 Exports,您查询的是 Zuora 数据源,而不是 SOAP API 对象。

希望这对您有所帮助。

祝你好运!

于 2016-11-22T07:18:17.653 回答
2

在查询中使用 * 是因为:

1)你想要所有可用的字段

或者

2)您想找出可用的字段。

对于后一种情况,使用 REST 服务的 Describe 功能,如下所示:

https://{servicename}.zuora.com:####/v1/describe/Invoice

它将返回 Invoice(或任何其他)对象的 XML 描述,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<object href="https://services470.zuora.com/apps/api/describe/Invoice">
    <name>Invoice</name>
    <label>Invoice</label>
    <fields>
        <field>
            <name>AccountId</name>
            <label>Account ID</label>
            <selectable>true</selectable>
            <createable>true</createable>
            <updateable>false</updateable>
            <filterable>true</filterable>
            <custom>false</custom>
            <maxlength></maxlength>
            <required>true</required>
            <type>text</type>
            <contexts>
                <context>soap</context>
            </contexts>
        </field>
        <field>
            <name>AdjustmentAmount</name>
            <label>Adjustment Amount</label>
            <selectable>true</selectable>
            <createable>false</createable>
            <updateable>false</updateable>
            <filterable>true</filterable>
            <custom>false</custom>
            <maxlength></maxlength>
            <required>true</required>
            <type>decimal</type>
            <contexts>
                <context>soap</context>
                <context>export</context>
            </contexts>
        </field>
    <!-- All fields for Invoice...ETC   -->
</fields>
</object>
于 2018-07-17T15:17:28.293 回答