Merchant Center Sorgu Dili (MCQL), SQL'e benzer bir sorgu dilidir. Ürünlerinizin ve rekabet ettikleri pazarın performans verilerini almak için Merchant Reports API ile birlikte MCQL'yi kullanabilirsiniz.
Dilbilgisi
MCQL dilbilgisi referansını (normal ifade gösteriminde) aşağıda bulabilirsiniz:
Query -> SelectClause FromClause? WhereClause? OrderByClause? LimitClause?
SelectClause -> SELECT FieldName (, FieldName)*
FromClause -> FROM TableName
WhereClause -> WHERE Condition (AND Condition)*
OrderByClause -> ORDER BY Ordering (, Ordering)*
LimitClause -> LIMIT PositiveInteger
Condition -> FieldName Operator Value | FieldName BETWEEN Value AND Value
Operator -> = | != | > | >= | < | <= | <> | IN | NOT IN |
CONTAINS ANY | CONTAINS ALL | CONTAINS NONE | DURING |
LIKE | NOT LIKE | REGEXP_MATCH | NOT REGEXP_MATCH
Value -> Number | NumberList | String | StringList | Function
Ordering -> FieldName (ASC | DESC)?
FieldName -> [a-z] ([a-zA-Z0-9._])*
TableName -> [A-Z] ([a-zA-Z_])*
StringList -> ( String (, String)* )
NumberList -> ( Number (, Number)* )
PositiveInteger -> [1-9] ([0-9])*
Number -> -? [0-9]+ (. [0-9] [0-9]*)?
String -> (' Char* ') | (" Char* ")
Function -> LAST_14_DAYS | LAST_30_DAYS | LAST_7_DAYS |
LAST_BUSINESS_WEEK | LAST_MONTH | LAST_WEEK_MON_SUN |
LAST_WEEK_SUN_SAT | THIS_MONTH | THIS_WEEK_MON_TODAY |
THIS_WEEK_SUN_TODAY | TODAY | YESTERDAY
Aşağıdaki sembolleri kullanabilirsiniz:
?isteğe bağlı bir öğeyi gösterir.*sıfır veya daha fazla,+ise bir veya daha fazla anlamına gelir.(xxxxxx), gruplandırmayı gösterir.[a-z0-9], karakter aralıklarını ifade eder.|, "veya" anlamına gelir.
Büyük/küçük harfe duyarlılık
Çoğu MCQL operatörü büyük/küçük harfe duyarlıdır:
| Operatörler | Büyük/Küçük Harf Duyarlılığı |
|---|---|
| = veya != | Büyük/küçük harfe duyarlı |
| (NOT) IN | Büyük/küçük harfe duyarlı |
| (NOT) LIKE | Büyük/küçük harfe duyarlı |
| CONTAINS (...) | Büyük/küçük harfe duyarlı |
| REGEXP_MATCH | İsteğe bağlı olarak her ikisi de |
Maddeler
MCQL ile sorgulayabileceğiniz maddeler şunlardır:
SEÇ
SELECT ifadesi, alınacak alanların virgülle ayrılmış bir listesini alır.
Kullandığınız görünümdeki herhangi bir alanı seçebilirsiniz. Seçebileceğiniz alanlara dair bazı örnekler:
-
impressionsclicks
-
datemarketing_method
Tek bir istekte birden fazla alan türü için sorgu oluşturabilirsiniz. Aşağıda bununla ilgili bir örnek verilmiştir:
SELECT
date,
marketing_method,
impressions,
clicks
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'
FROM
FROM ifadesi, istekte verilerin alınacağı tabloyu belirtir. FROM ifadesinde yalnızca bir alan belirtebilirsiniz. FROM ifadesi tüm sorgular için gereklidir.
WHERE
İsteğinizle ilgili verileri filtrelemek için WHERE ifadesini kullanın. WHERE ifadesi, performans
sorguları için gereklidir.
Tüm segment alanlarına ve SELECT ifadesinde belirtirseniz ek metrik alanlarına göre filtreleyebilirsiniz.
Yalnızca belirli bir dönemdeki (Ağustos ayı) gösterimleri döndürmek için WHERE kullanılan bir örneği aşağıda bulabilirsiniz:
SELECT offer_id, impressions
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'
AND operatörüyle tek bir sorguda birden çok koşula göre filtreleme yapabilirsiniz.
Tam koşullar arasında AND kullanın. Örneğin: WHERE marketing_method !=
"ADS" AND marketing_method != "ORGANIC". Tek bir koşuldaki değerler arasında AND kullanamazsınız. Örneğin: WHERE marketing_method != "ADS" AND
"ORGANIC".
Aşağıda, Ağustos ayı boyunca ADS pazarlama yönteminde 100'den fazla tıklama alan teklif başına tıklama sayısını döndüren bir örnek verilmiştir:
SELECT offer_id, clicks
FROM product_performance_view
WHERE clicks > 100
AND marketing_method = 'ADS'
AND date BETWEEN '2023-08-01' AND '2023-08-31'
WHERE ifadesi, OR öğesini desteklemiyor. Operatörler büyük/küçük harfe duyarlıdır. Operatörlerin tam listesi için dilbilgisi konusuna bakın.
ORDER BY (isteğe bağlı)
ORDER BY ifadesi, sonuçları belirtilen sırada almanızı sağlar.
Sıralamayı field_name, ardından ASC veya DESC ile belirtin. Yalnızca sorgunuzun SELECT ifadesinde belirtilen alanlara göre sıralama yapabilirsiniz. Belirtmezseniz ORDER BY varsayılan olarak ASC olur.
Aşağıdaki sorgu, döndürülen satırları tıklama sayısına göre en yüksekten en düşüğe doğru sıralar:
SELECT offer_id, clicks
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'
ORDER BY clicks DESC
Virgülle ayrılmış bir liste kullanarak ORDER BY ifadesinde birden fazla alan belirtebilirsiniz.
Örneğin, aşağıdaki sorgunun sonuçları önce offer_id'ya göre artan düzende, ardından gösterim sayısına göre azalan düzende, son olarak da tıklama sayısına göre azalan düzende sıralanır:
SELECT offer_id, impressions, clicks
FROM product_performance_view
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY
offer_id,
impressions DESC,
clicks DESC
SINIRLAMA
LIMIT ifadesi, döndürülecek sonuç sayısını belirtmenize olanak tanır.
Aşağıda, daha fazla satır olsa bile yalnızca 50 sonuç döndüren bir örnek verilmiştir.
SELECT offer_id, impressions
FROM product_performance_view
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY impressions DESC
LIMIT 50
Uzun sonuç listelerini işlemek için pageSize alanını kullanın.
Tarih aralıkları
MCQL, özel veya göreli bir tarih aralığı belirtmenize olanak tanır. Tüm performans sorguları için bir date aralığı belirtmek üzere WHERE ifadesini kullanmanız gerekir.
Özel
ISO 8601(YYYY-AA-GG) tarihlerini aşağıdaki biçimlerde belirtebilirsiniz:
date BETWEEN '2021-01-01' AND '2021-01-31'date >= '2021-01-01' AND date <= '2021-01-31'
Tarih dizelerini tek tırnak (') veya çift tırnak (") ile tanımlayabilirsiniz.
Akraba
BETWEEN ve AND yerine DURING kullanarak LAST_30_DAYS veya THIS_MONTH gibi göreli bir tarih aralığı belirtebilirsiniz:
WHERE date DURING LAST_30_DAYS
Kullanılabilir göreli tarih aralıklarının tam listesi için dilbilgisi bölümüne bakın.