Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Edge Analytics; etkileşimli gösterge tabloları, özel rapor oluşturucular ve ilgili özelliklerden oluşan zengin bir küme sunar. Ancak bu özelliklerin etkileşimli olması amaçlanmıştır: API veya kullanıcı arayüzü isteği gönderirsiniz ve analiz sunucusu yanıt verene kadar istek engellenir.
Bununla birlikte, tamamlanmaları çok uzun sürerse analiz istekleri zaman aşımına uğrayabilir. Bir sorgu isteğinin büyük miktarda veri (örneğin, 100'lük GB) işlemesi gerekiyorsa bir zaman aşımı nedeniyle başarısız olabilir.
Eş zamansız sorgu işleme, çok büyük veri kümeleri için sorgulama yapmanıza ve sonuçları daha sonra almanıza olanak tanır. Etkileşimli sorgularınızın zaman aşımına uğradığını gördüğünüzde çevrimdışı bir sorgu kullanmayı düşünebilirsiniz. Eşzamansız sorgu işlemenin iyi bir alternatif olabileceği bazı durumlar şunlardır:
- Geniş zaman aralıklarını kapsayan raporlar analiz etme ve oluşturma
- Verileri, çeşitli gruplandırma boyutları ve sorguya karmaşıklık katan diğer kısıtlamalarla analiz etme.
- Bazı kullanıcılar veya kuruluşlar için veri hacimlerinin önemli ölçüde arttığını fark ettiğinizde sorguları yönetme.
Bu belgede, API kullanılarak eşzamansız sorguların nasıl başlatılacağı açıklanmaktadır. Ayrıca, kullanıcı arayüzünü Özel rapor çalıştırma bölümünde açıklandığı gibi kullanabilirsiniz.
Reports API'yi kullanıcı arayüzüyle karşılaştırma
Özel raporlar oluşturma ve yönetme bölümünde, özel raporlar oluşturmak ve çalıştırmak için Edge kullanıcı arayüzünün nasıl kullanılacağı açıklanmaktadır. Bu raporları eşzamanlı veya eşzamansız olarak çalıştırabilirsiniz.
Kullanıcı arayüzüyle özel rapor oluşturma kavramlarının çoğu API kullanımı için de geçerlidir. Yani, API ile özel raporlar oluştururken Edge'de yerleşik olarak bulunan metrics, boyutlar, filtreler ve StatsCollector politikasını kullanarak oluşturduğunuz tüm özel metrikleri belirlersiniz.
Kullanıcı arayüzünde ve API'de oluşturulan raporlar arasındaki önemli farklar, API ile oluşturulan raporların, kullanıcı arayüzünde görüntülenen bir görsel rapor yerine CSV veya JSON (yeni satırla sınırlandırılmış) dosyalarına yazılmasıdır.
ApigeeHybrid'teki sınırlar
ApigeeHybrid, sonuç veri kümesi için 30 MB boyut sınırı uygular.
Eşzamansız analiz sorgusu nasıl oluşturulur?
Eşzamansız analiz sorgularını üç adımda yaparsınız:
1. Adım: Sorguyu gönderme
/queries API'sine POST isteği göndermeniz gerekir. Bu API, Edge'e isteğinizi arka planda işlemesini bildirir. Sorgu başarıyla gönderilirse API, 201 durumunu ve sonraki adımlarda sorguya başvurmak için kullanacağınız bir kimlik döndürür.
Örneğin:
curl -X POST -H "Content-Type:application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries -d @json-query-file -u orgAdminEmail:password
İsteğin gövdesi, sorgunun bir JSON açıklamasıdır. JSON gövdesinde raporu tanımlayan metrics, boyutları ve filtreleri belirtin.
Aşağıda örnek bir json-query-file
dosyası gösterilmektedir:
{
"metrics": [
{
"name": "message_count",
"function": "sum",
"alias": "sum_txn"
}
],
"dimensions": ["apiproxy"],
"timeRange": "last24hours",
"limit": 14400,
"filter":"(message_count ge 0)"
}
İstek gövdesi söz diziminin tam açıklaması için aşağıdaki İstek gövdesi hakkında bölümüne bakın.
Örnek yanıt:
9cfc0d85-0f30-46d6-ae6f-318d0cb961bd
sorgu kimliğinin yanıta dahil edildiğini unutmayın. 201 HTTP durumuna ek olarak enqueued
öğesinin state
değeri, isteğin başarılı olduğu anlamına gelir.
HTTP/1.1 201 Created
{
"self":"/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
"created":"2018-05-10T07:11:10Z",
"state":"enqueued",
"error":"false",
}
2. adım: Sorgu durumunu alma
Sorgunun durumunu istemek için bir GET çağrısı yapın. POST çağrısından döndürülen sorgu kimliğini sağlarsınız. Örneğin:
curl -X GET -H "Content-Type:application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd -u email:password
Örnek yanıtlar:
Sorgu devam ediyorsa şuna benzer bir yanıt alırsınız: state
değeri running
şeklindedir:
{
"self": "/organizations/myorg/environments/myenv/queries/1577884c-4f48-4735-9728-5da4b05876ab",
"state": "running",
"created": "2018-02-23T14:07:27Z",
"updated": "2018-02-23T14:07:54Z"
}
Sorgu başarıyla tamamlandıktan sonra, state
değerinin completed
olarak ayarlandığı aşağıdaki gibi bir yanıt görürsünüz:
{
"self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
"state": "completed",
"result": {
"self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result",
"expires": "2017-05-22T14:56:31Z"
},
"resultRows": 1,
"resultFileSize": "922KB",
"executionTime": "11 sec",
"created": "2018-05-10T07:11:10Z",
"updated": "2018-05-10T07:13:22Z"
}
3. Adım: Sorgu sonuçlarını alma
Sorgu durumu completed
olduğunda, sonuçları almak için get results API'sini kullanabilirsiniz. Burada sorgu kimliği tekrar 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd
olur.
curl -X GET -H "Content-Type:application/json" -O -J https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result -u email:password
İndirilen dosyayı geri almak için, kullandığınız aracı, indirilen bir dosyayı sisteminize kaydedecek şekilde yapılandırmanız gerekir. Örneğin:
cURL kullanıyorsanız yukarıda gösterildiği gibi
-O -J
seçeneklerini kullanabilirsiniz.Postman'ı kullanıyorsanız Save and Download (Kaydet ve İndir) düğmesini seçmeniz gerekir. Bu durumda,
response
adlı bir zip dosyası indirilir.Chrome tarayıcı kullanıyorsanız indirme işlemi otomatik olarak kabul edilir.
İstek başarılı olursa ve sıfır dışında bir sonuç kümesi varsa sonuç istemciye sıkıştırılmış JSON (yeni satırla sınırlandırılmış) dosyası olarak indirilir. İndirilen dosyanın adı şöyle olacaktır:
OfflineQueryResult-<query-id>.zip
Örneğin:
OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
ZIP dosyası, JSON sonuçlarının .gz arşiv dosyasını içerir. JSON dosyasına erişmek için, indirilen dosyayı açın, ardından gzip
komutunu kullanarak JSON dosyasını çıkarın:
unzip OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
gzip -d QueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd-000000000000.json.gz
İstek metni hakkında
Bu bölümde, bir sorgu için JSON istek gövdesinde kullanabileceğiniz parametrelerin her biri açıklanmaktadır. Sorgunuzda kullanabileceğiniz metrikler ve boyutlarla ilgili ayrıntılar için Analytics referansı başlıklı makaleyi inceleyin.
{ "metrics":[ { "name":"metric_name", "function":"aggregation_function", "alias":"metric_dispaly_name_in_results", "operator":"post_processing_operator", "value":"post_processing_operand" }, ... ], "dimensions":[ "dimension_name", ... ], "timeRange":"time_range", "limit":results_limit, "filter":"filter", "groupByTimeUnit": "grouping", "outputFormat": "format", "csvDelimiter": "delimiter" }
Özellik | Açıklama | Zorunlu mu? |
---|---|---|
metrics
|
Metrik dizisi. Her metriğin içerdiği bir sorgu için bir veya daha fazla metrik belirtebilirsiniz. Yalnızca metrik adı gereklidir:
"metrics":[ { "name":"response_processing_latency", "function":"avg", "alias":"average_response_time_in_seconds", "operator":"/", "value":"1000" } ] Daha fazla bilgi için Analytics metrikleri, boyutları ve filtreleriyle ilgili referans başlıklı makaleyi inceleyin. |
Hayır |
dimensions
|
Metrikleri gruplandırmak için kullanılan boyutlar dizisi. Daha fazla bilgi için desteklenen boyut listesine bakın. Birden çok boyut belirtebilirsiniz. | Hayır |
timeRange
|
Sorgunun zaman aralığı.
Zaman aralığını belirtmek için aşağıdaki önceden tanımlanmış dizeleri kullanabilirsiniz:
İsterseniz "timeRange": { "start": "2018-07-29T00:13:00Z", "end": "2018-08-01T00:18:00Z" } |
Evet |
limit
|
Sonuçta döndürülebilecek maksimum satır sayısı. | Hayır |
filter
|
Verileri filtrelemek için kullanılabilecek Boole ifadesi. Filtre ifadeleri, VE/VEYA terimleri kullanılarak birleştirilebilir. Muğlaklığı önlemek için tam olarak parantez içine alınmalıdır. Filtrelenebilir alanlar hakkında daha fazla bilgi için Analytics metrikleri, boyutları ve filtreleri referansı başlıklı makaleyi inceleyin. Filtre ifadeleri oluşturmak için kullandığınız jetonlar hakkında daha fazla bilgi edinmek için Filtre ifadesi söz dizimi bölümüne bakın. | Hayır |
groupByTimeUnit
|
Sonuç kümesini gruplandırmak için kullanılan zaman birimi. Geçerli değerler şunları içerir: second , minute , hour , day , week veya month .
Bir sorgu |
Hayır |
outputFormat
|
Çıkış biçimi. Geçerli değerler şunları içerir: csv veya json . Varsayılan olarak json değerine ayarlanır, yeni satırla sınırlandırılmış JSON'a karşılık gelir.
Not: |
Hayır |
csvDelimiter
|
outputFormat , csv olarak ayarlanırsa CSV dosyasında sınırlayıcı kullanılır. Varsayılan olarak , (virgül) karakteri kullanılır. Sınırlayıcı karakterler arasında virgül (, ), dikey çizgi (| ) ve sekme (\t ) bulunur.
|
Hayır |
Filtre ifadesi söz dizimi
Bu referans bölümünde, istek gövdesinde filtre ifadeleri oluşturmak için kullanabileceğiniz jetonlar açıklanmaktadır. Örneğin, aşağıdaki ifadede "ge" jetonu kullanılmaktadır (büyüktür veya eşittir):
"filter":"(message_count ge 0)"
Jeton | Açıklama | Örnekler |
---|---|---|
in
|
Listeye dahil et | (apiproxy in 'ethorapi','weather-api') (apiproxy in 'ethorapi') (apiproxy in 'Search','ViewItem') (response_status_code in 400,401,500,501) Not: Dizeler tırnak işareti içinde olmalıdır. |
notin
|
Listeden hariç tut | (response_status_code notin 400,401,500,501) |
eq
|
Eşittir (==)
|
(response_status_code eq 504) (apiproxy eq 'non-prod') |
ne
|
(!=) değerine eşit değil
|
(response_status_code ne 500) (apiproxy ne 'non-prod') |
gt
|
Büyüktür (>)
|
(response_status_code gt 500) |
lt
|
Şundan küçük (<) )
|
(response_status_code lt 500) |
ge
|
Şundan büyük veya şuna eşit (>=)
|
(target_response_code ge 400) |
le
|
Şundan küçük veya şuna eşit (<=)
|
(target_response_code le 300) |
like
|
Dize kalıbı sağlanan kalıpla eşleşirse true değerini döndürür.
Sağdaki örnek şu şekilde eşleşir: - "satın al" kelimesini içeren tüm değerler - "item" ile biten herhangi bir değer - "Prod" ile başlayan herhangi bir değer - 4 ile başlayan herhangi bir değer; yanıt_durumu_kodunun sayısal olduğu unutulmamalıdır
|
(apiproxy like '%buy%') (apiproxy like '%item') (apiproxy like 'Prod%') |
not like
|
Dize kalıbı sağlanan kalıpla eşleşirse false (yanlış) değerini döndürür. | (apiproxy not like '%buy%') (apiproxy not like '%item') (apiproxy not like 'Prod%') |
and
|
Birden fazla filtre ifadesi eklemek için "and" (ve) mantığını kullanmanıza olanak tanır. Filtre tüm koşulları karşılayan verileri içerir. | (target_response_code gt 399) and (response_status_code ge 400) |
or
|
Olası farklı filtre ifadelerini değerlendirmek için "veya" mantığını kullanmanıza olanak tanır. Filtre, koşullardan en az birini karşılayan verileri içerir. | (response_size ge 1000) or (response_status_code eq 500) |
Kısıtlamalar ve varsayılanlar
Aşağıda, eşzamansız sorgu işleme özelliği için sınırlamalar ve varsayılanların bir listesi verilmiştir.
Kısıtlama | Varsayılan | Açıklama |
---|---|---|
Sorgu çağrı sınırı | Açıklamayı göster | eşzamansız bir rapor başlatmak için /queries management API'ye saatte en fazla yedi çağrı yapabilirsiniz. Çağrı kotasını aşarsanız API, HTTP 429 yanıtı döndürür. |
Etkin sorgu sınırı | 10 | Bir kuruluş/ortam için en fazla 10 etkin sorgunuz olabilir. |
Sorgu yürütme süresi eşiği | 6 saat | 6 saatten uzun süren sorgular sonlandırılacaktır. |
Sorgu Zaman Aralığı | Açıklamayı göster | Bir sorgu için izin verilen maksimum zaman aralığı 365 gündür. |
Boyut ve metrik sınırı | 25 | Sorgu yükünde belirtebileceğiniz maksimum boyut ve metrik sayısı. |
Sorgu sonuçları hakkında
Aşağıda JSON biçiminde bir sonuç örneği verilmiştir. Çıkış, yeni bir satır sınırlayıcıyla ayrılmış JSON satırlarından oluşur:
{"message_count":"10209","apiproxy":"guest-auth-v3","hour":"2018-08-07 19:26:00 UTC"}
{"message_count":"2462","apiproxy":"carts-v2","hour":"2018-08-06 13:16:00 UTC"}
…
Veri deposundaki verilerin süresi dolana kadar sonuçları URL'den getirebilirsiniz. Kısıtlamalar ve varsayılanlar bölümüne göz atın.
Örnekler
1. Örnek: Mesaj sayılarının toplamı
Son 60 dakika içindeki mesaj sayılarının toplamı için sorgu.
Sorgu
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" -d @last60minutes.json -u orgAdminEmail:password
last60minutes.json dosyasından gelen istek gövdesi
{
"metrics":[
{
"name":"message_count",
"function":"sum"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":"last60minutes"
}
2. Örnek: Özel zaman aralığı
Özel bir zaman aralığı kullanarak sorgu oluşturun.
Sorgu
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" https://api.enterprise.apigee.com/v1 /organizations/myorg/environments/test/queries" -d @last60minutes.json -u orgAdminEmail:password
last60minutes.json dosyasındaki istek gövdesi
{
"metrics":[
{
"name":"message_count",
"function":"sum"
},
{
"name":"total_response_time",
"function":"avg",
"alias":"average_response_time"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":{
"start":"2018-11-01T11:00:00Z",
"end":"2018-11-30T11:00:00Z"
}
}
3. Örnek: Dakika başına işlem sayısı
Dakika başına işlem sayısı (tpm) metriğiyle ilgili sorgu.
Sorgu
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" -d @tpm.json -u orgAdminEmail:password
tpm.json dosyasındaki istek gövdesi
{
"metrics":[
{
"name":"tpm"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":{
"start":"2018-07-01T11:00:00Z",
"end":"2018-07-30T11:00:00Z"
}
}
Örnek sonuç
Sonuç dosyasından alıntı:
{"tpm":149995.0,"apiproxy":"proxy_1","minute":"2018-07-06 12:16:00 UTC"} {"tpm":149998.0,"apiproxy":"proxy_1","minute":"2018-07-09 15:12:00 UTC"} {"tpm":3.0,"apiproxy":"proxy_2","minute":"2018-07-11 16:18:00 UTC"} {"tpm":148916.0,"apiproxy":"proxy_1","minute":"2018-07-15 17:14:00 UTC"} {"tpm":150002.0,"apiproxy":"proxy_1","minute":"2018-07-18 18:11:00 UTC"} ...
4. Örnek: Filtre ifadesi kullanma
Boole operatörü kullanan bir filtre ifadesiyle sorgu yapın.
Sorgu
curl -X POST -H "Content-Type:application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" -d @filterCombo.json -u orgAdminEmail:password
filterCombo.json dosyasındaki istek gövdesi
{
"metrics":[
{
"name":"message_count",
"function":"sum"
},
{
"name":"total_response_time",
"function":"avg",
"alias":"average_response_time"
}
],
"filter":"(apiproxy ne \u0027proxy_1\u0027) and (apiproxy ne \u0027proxy_2\u0027)",
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":{
"start":"2018-11-01T11:00:00Z",
"end":"2018-11-30T11:00:00Z"
}
}
5. Örnek: Metrikler parametresinde ifade iletme
Metrikler parametresinin parçası olarak iletilen bir ifadeyle sorgu yapın. Yalnızca basit tek operatör ifadelerini kullanabilirsiniz.
Sorgu
curl -X POST -H "Content-Type:application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" -d @metricsExpression.json -u orgAdminEmail:password
MetricExpression.json dosyasının gövdesi
{
"metrics":[
{
"name":"message_count",
"function":"sum",
"operator":"/",
"value":"7"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":10,
"timeRange":"last60minutes"
}
Eşzamansız para kazanma raporu sorgusu nasıl oluşturulur?
Bu bölümde açıklanan adımları kullanarak belirli bir ölçüt grubu için belirli bir zaman aralığındaki tüm başarılı para kazanma işlemlerini yakalayabilirsiniz.
Eşzamansız analiz sorgularında olduğu gibi, eşzamansız para kazanma raporu sorgularını üç adımda oluşturursunuz: (1) sorguyu gönderme, (2) sorgu durumunu alma ve (3) sorgu sonuçlarını alma.
1. Adım'da, sorguyu gönderme işlemi aşağıda açıklanmıştır.
2. ve 3. adımlar, eşzamansız analiz sorguları için tamamen aynıdır. Daha fazla bilgi için eşzamansız analiz sorgusu oluşturma bölümüne bakın.
Eşzamansız para kazanma raporu hakkında sorgu göndermek için /mint/organizations/org_id/async-reports
adresine POST isteği gönderin.
İsteğe bağlı olarak, ortamı environment
sorgu parametresini ileterek belirtebilirsiniz. Belirtilmezse sorgu parametresi varsayılan olarak prod
olur. Örneğin:
/mint/organizations/org_id/async-reports?environment=prod
İstek gövdesinde aşağıdaki arama ölçütlerini belirtin.
Ad | Açıklama | Varsayılan | Zorunlu mu? |
appCriteria |
Rapora dahil edilecek belirli bir uygulamanın kimliği ve kuruluşu. Bu özellik belirtilmezse tüm uygulamalar rapora dahil edilir. | Yok | Hayır |
billingMonth |
Rapor için faturalandırma ayı (ör. TEMMUZ). | Yok | Evet |
billingYear |
Rapor için faturalandırma yılı (ör. 2015). | Yok | Evet |
currencyOption |
Raporun para birimi. Geçerli değerler şunları içerir:
EUR, GBP veya USD'yi seçerseniz rapor, işlem tarihinde geçerli olan döviz kuruna göre bu tek para birimini kullanan tüm işlemleri görüntüler. |
Yok | Hayır |
devCriteria
|
Belirli bir geliştiricinin rapora dahil edilecek olan geliştirici kimliği veya e-posta adresi ve kuruluş adı. Bu özellik belirtilmezse tüm geliştiriciler rapora dahil edilir. Örneğin: "devCriteria":[{ "id":"RtHAeZ6LtkSbEH56", "orgId":"my_org"} ] |
Yok | Hayır |
fromDate
|
Raporun başlangıç tarihi (UTC). | Yok | Evet |
monetizationPakageIds |
Rapora dahil edilecek bir veya daha fazla API paketinin kimliği. Bu özellik belirtilmezse tüm API paketleri rapora dahil edilir. | Yok | Hayır |
productIds
|
Rapora dahil edilecek bir veya daha fazla API ürününün kimliği. Bu özellik belirtilmezse tüm API ürünleri rapora dahil edilir. | Yok | Hayır |
ratePlanLevels |
Rapora dahil edilecek ücret planı türü. Geçerli değerler şunları içerir:
Bu mülk belirtilmezse hem geliştiriciye özel hem de standart ücret planları rapora dahil edilir. |
Yok | Hayır |
toDate
|
Raporun bitiş tarihi (UTC). | Yok | Evet |
Örneğin aşağıdaki istek, belirtilen API ürünü ve geliştirici kimliği için Haziran 2017'ye ait eşzamansız para kazanma raporu oluşturur. Rapordaki fromDate
ile toDate
tarih ve saatleri, UTC/GMT'ye göredir ve saat içerebilir.
curl -H "Content-Type:application/json" -X POST -d \ '{ "fromDate":"2017-06-01 00:00:00", "toDate":"2017-06-30 00:00:00", "productIds": [ "a_product" ], "devCriteria": [{ "id": "AbstTzpnZZMEDwjc", "orgId": "myorg" }] }' \ "https://api.enterprise.apigee.com/v1/mint/organizations/myorg/async-reports?environment=prod" \ -u orgAdminEmail:password