Query vs. classic query: which should you use?
Classic queries were replaced by queries after the 8.4 release.
- Queries use the legacy user interface that is based on the Acoustic Campaign programs drag-and-drop decision diamonds and includes new behaviors. This query builder does just about everything that the classic builder does, but contains lots of extras that enable you to add interesting behavior elements to your segmentation. The UI is also more intuitive and easier to use than the classic query builder, and much easier on the eyes as well.
- Classic queries are available to Acoustic Campaign users for segmenting data and helping marketers deliver more engaging content to their customers and prospects.
Comparing queries and classic queries
Deciding if you should use query or classic query depends on which features you want to use for your emails. Let's look at a comparison of both query types. The table below provides an overview of features each query type may or may not support.
| Feature | Queries | Classic queries |
|---|---|---|
| Field type change option for operators | No, only operators that match the field type are presented in the drop down | Yes, Type can be changed to get operators that don't match the type of the field |
| Calculate | Yes, triggers data job | Yes, triggers data job |
|
Math in value |
No, but, most things that required math are now covered in new operators | Yes |
| Has (not) Been Sent Email - mailing type | Queries all sends to selected mailing template | Queries specific sent mailings |
| Relational table data | Yes. Acoustic Campaign does not yet offer aggregate operators. | Yes |
| Locked criteria | Yes | Yes |
| CRM opportunity data/criteria | Yes | Yes (CRM lead source only) |
| Create via API | Yes | Yes |
| Dynamic content | Yes, includes more options like 'is in query', behaviors, and relational table data | Yes |
| Segmenting | Yes | Yes |
| Purge function | Yes | Yes |
| Contact source | Yes, you can choose a new email query as the contact source for emails, landing pages, and sending. | Yes |
| Contact source for automated A/B testing | Yes | No |
| Contact lists | Yes, can be associated with your web forms and selected by the user or imported/added by you. | Yes |
| Sending to multiple queries | Yes | No |
| Case sensitivity toggle | No, everything is case insensitive | Yes, a setting you can toggle for each profile criteria |
| Behavior criteria |
Yes
|
Yes
|
| Is In query |
Yes, but watch out for circular references. Circular references are when two queries A and B reference on another. |
No |
| Queries created as classic queries | No | Yes |
| Fields for personalization | No | Yes |
| Export results | Yes | Yes |
| Current date as value option | No, but 'Is Today' operator is used for same result as classic queries 'Current Date' value | Yes |
| Easy to use | Yes | Sufficient |
Same criteria, different results in queries and classic queries
With the ability to create two different queries in Acoustic Campaign, you might find that if criteria appear to be the same, results can be different. For example, the following are two different queries with different results.
Query
WHEN customer_opt_in_opg is equal to Yes
OR language is equal to EN
OR country is equal to GB
OR partner_account_type is not equal to Press
Result: Count = 3612
Classic query
[customer_opt_in_opg] equals Yes
OR [language] equals EN
OR [country] equals GB
OR [partner_account_type] does not equal Press
Result: Count = 96
Reason for different results:
The two queries resulted in different results because of the blank/null in the parent database. Even though the criteria is the same, looking for the same recipients in the database, the classic query needs to be further defined to include other values, whereas query does include these other values.
The following table lists differences and how to have both queries populate the same results.
Examples of criteria differences
| Classic query | Query |
|---|---|
|
Date: does not equal ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Date:is not equal to considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
| Date: is not empty ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Date: is not blank considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
|
Date: is not in list ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Date: is not equal to one of the following considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
|
Numeric: does not equal ignores blanks, if you want them considered you'll want to use the OR operator OR ADD a criteria that looks for "is empty" |
Numeric: is not equal to considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
| Numeric: is not empty ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Numeric: is not blank considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
|
Numeric: is not in list ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Numeric: is not equal to one of the following considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
|
Text: does not equal ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Text: is not equal to considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
|
Text: is not empty ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Text: is not blank considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
|
Text: is not in list ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Text: is not equal to one of the following considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
|
Text: does not contain ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Text: does not contain considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
| Text: does not start with ignores blanks, if you want them considered you'll want to use the or operator OR ADD a criteria that looks for "is empty" |
Text: does not start with considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |
|
Text: does not end with ignores blanks, if you want them considered you'll want to use the OR operator or ADD a criteria that looks for "is empty" |
Text: does not end with considers blanks, if you want them ignored you'll want to use the OR operator or ADD a criteria that looks for "is not blank" |