W tym przewodniku przedstawiamy zasoby do rozwiązywania problemów z określaniem stawek w czasie rzeczywistym, które umożliwiają
z danymi kampanii z określaniem stawek w czasie rzeczywistym, które są widoczne również
Narzędzie Podział RTB w
Interfejs Authorized Buyers. Są to między innymi bidders.filterSets
, bidders.accounts.filterSets
i
wszystkich podrzędnych zasobów.
Dzięki danym z zasobów dotyczących rozwiązywania problemów z RTB możesz uzyskać statystyki niewykorzystanych możliwości aby zdobywać wyświetlenia, które pomogą Ci zoptymalizować kampanię z określaniem stawek w czasie rzeczywistym.
Zmiany w strukturze i stylu interfejsu API
Materiały do rozwiązywania problemów z RTB wprowadzają kilka zmian, które pozwalają jednoznacznie wskazać własność dostępu, bardziej szczegółową kontrolę nad danymi zwracanymi przez interfejs API oraz metod projektowania interfejsów API Google.
Zasoby na poziomie licytującego i na poziomie konta
Informacje o zasobach znajdują się w porządku bidders
i bidders.accounts
. Umożliwiają one określenie
czy wywołanie interfejsu API jest kierowane na licytującego (konto nadrzędne), a także wszystkie powiązane
kont podrzędnych czy indywidualnych kont Authorized Buyers. W kontekście RTB
Rozwiązywanie problemów: zasoby uporządkowane pod nagłówkiem bidders.filterSets
będą zwracać wskaźniki zagregowane
dla danego licytującego i wszystkich powiązanych kont podrzędnych. Z kolei osoby poniżej
Funkcja bidders.accounts.filterSets
będzie zwracać tylko dane dotyczące określonego konta niezależnie od tego:
niezależnie od tego, czy chodzi o konto licytującego czy na konto podrzędne.
Uwaga: konta, które przekazują ustalanie stawek innemu kupującemu, nie są kontami licytujących.
co sprawia, że nie mają dostępu do zasobów na poziomie licytującego. Poza tym na kontach, które nie korzystają z aukcji,
dostęp do ustawień impressionMetrics
, filteredBidResponses
, bidResponseErrors
i na poziomie konta
bidResponsesWithoutBids
zasobów.
Przedstawiamy nazwy zasobów jako unikalne identyfikatory
Nazwy zasobów są używane jako czyli unikalnych identyfikatorów, a nie identyfikatorów w postaci liczb całkowitych lub ciągów znaków. Podczas tworzenia nowego wystąpienia danego argumentu musisz określić względne nazwa zasobu za pomocą ścieżki identyfikatora URI, po której następuje preferowany identyfikator zasobu. Oto przykłady nazw ważnych w zasobach dotyczących rozwiązywania problemów z RTB:
Zasób | Przykładowa nazwa |
---|---|
bidders.filterSets | bidders/12345678/filterSets/fset_1 |
bidders.accounts.filterSets | bidders/12345678/accounts/87654321/filterSets/fset_2 |
Uwaga: identyfikator zasobu określony w nazwie atrybutu bidders
musi być identyfikatorem licytującego.
Identyfikator konta Authorized Buyers. W przypadku accounts
identyfikator zasobu musi być identyfikatorem konta albo
licytującego lub na koncie podrzędnym zarządzanym przez ten system. Jeśli nie wiesz, które Authorized Buyers
powiązane z Twoim kontem Google, możesz użyć
accounts.list, aby je znaleźć.
Filtruj zestawy
Zestaw filtrów reprezentuje dostępne opcje filtrowania i można go utworzyć na poziomie licytującego lub konta. Służy do filtrowania wyników z punktu widzenia rozwiązywania problemów z RTB zasobów, które pobierają dane o kampaniach z określaniem stawek w czasie rzeczywistym.
Filtr stosowany przy pobieraniu danych to przecięcia poszczególnych filtrów w określonym
zestawu filtrów. Filtry listy, takie jak platforms
, są interpretowane jako suma elementów występujących na liście.
Zestawy filtrów na poziomie licytującego i na poziomie konta różnią się i są dostępne tylko na poziomie, na którym niezależnie od konta, na którym zostały utworzone. Udział licytujących i kont podrzędnych zestawy filtrów utworzone na poziomie konta, a licytujący ma dostęp do zasobów na poziomie na poziomie licytującego. W tabeli poniżej znajdziesz podsumowanie dotyczące dostępu do zasobów przez konta licytujące i podrzędne na dowolnym poziomie:
bidders.filterSets | bidders.accounts.filterSets | |
---|---|---|
Konto licytującego | Wywołanie interfejsu API mające wpływ tylko na zestawy filtrów na poziomie licytującego. | Wywołanie interfejsu API mające wpływ tylko na zestawy filtrów na poziomie konta. |
Konto dziecka | To wywołanie interfejsu API zwróci odpowiedź o błędzie. | Wywołanie interfejsu API mające wpływ tylko na zestawy filtrów na poziomie konta. |
Utwórz zestaw filtrów
Przy tworzeniu zestawu filtrów musisz podać zakres czasu jako relativeDateRange
,
absoluteDateRange
lub realtimeTimeRange
. Przy pobieraniu wskaźników para klucz-wartość
działanie domyślne to udostępnianie wszystkich danych z całego zakresu czasu. Aby otrzymywać
rozkład ciągów czasowych w danym przedziale czasu, możesz określić timeSeriesGranularity
aby wskazać interwały HOURLY
lub DAILY
.
Jeśli potrzebujesz filtra ustawionego tylko przez krótki czas, możesz ustawić isTransient
do funkcji true
. Oznacza to, że zestaw filtrów jest przejściowy, co oznacza, że nie będzie trwały. Zestawy filtrów tymczasowych będą dostępne przez co najmniej godzinę od utworzenia, ale po pewnym czasie zostaną usunięte. Domyślnie zestawy filtrów nie są tymczasowe.
Przykład na poziomie licytującego
Aby utworzyć nowy zestaw filtrów na poziomie licytującego, wyślij żądanie POST
do identyfikatora URI zasobu bidders.filterSets
, który ma ten format:
https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets
Ostrzeżenie: zestawów filtrów na poziomie licytującego nie można filtrować według identyfikatora kreacji ani identyfikatora umowy. Jeśli podczas tworzenia zestawu filtrów na poziomie licytującego określisz te filtry, otrzymasz odpowiedź o błędzie.
Wyślij prośbęOto przykład żądania POST
, które tworzy nowy trwały zestaw filtrów na poziomie licytującego:
POST https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets Authorization: Bearer access token here Content-Type: application/json { "name": "bidders/12345678/filterSets/bidder-fs", "format": "DISPLAY", "environment": "APP", "platforms": ["TABLET", "MOBILE"], "absoluteDateRange": { "startDate": { "month": 11, "day": 26, "year": 2017 }, "endDate": { "month": 12, "day": 3, "year": 2017 } }, "timeSeriesGranularity": "DAILY" }
Jeśli żądanie zostanie zrealizowane, serwer odpowiada kodem stanu 200 OK. Treść odpowiedzi będzie zawierać utworzony zasób zestawu filtrów, który będzie taki sam jak zestaw filtrów przesłany w żądaniu.
Przykład na poziomie konta
Aby utworzyć nowy zestaw filtrów na poziomie konta, wyślij prośbę POST
do
Identyfikator URI zasobu bidders.accounts.filterSets
w formacie:
https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets
Uwaga: identyfikator zasobu określony dla accounts
może
musi być identyfikatorem każdego konta Authorized Buyers, do którego ma dostęp licytujący.
konta podanego w identyfikatorze URI, w tym konta licytującego.
Oto przykład żądania POST
, które tworzy nowy trwały zestaw filtrów na poziomie konta:
POST https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets Authorization: Bearer access token here Content-Type: application/json { "name": "bidders/12345678/accounts/87654321/filterSets/account-fs", "format": "VIDEO", "environment": "WEB", "platforms": ["DESKTOP"], "absoluteDateRange": { "startDate": { "month": 11, "day": 26, "year": 2017 }, "endDate": { "month": 12, "day": 3, "year": 2017 } }, "timeSeriesGranularity": "DAILY" }
Jeśli żądanie zostanie zrealizowane, serwer odpowiada kodem stanu 200 OK. Treść odpowiedzi uwzględnij utworzony zasób zestawu filtrów, który będzie taki sam jak zestaw filtrów przesłany w do ich przesłania.
Pobierz zestaw filtrów
Metoda get może uzyskać zestaw filtrów tylko na tym samym poziomie, na którym został utworzony. Na przykład:
konto powinno użyć metody bidders.accounts.filterSets.get
, aby pobrać zestaw filtrów utworzony na koncie
na poziomie obiektu, a nie w metodzie bidders.filterSets.get
.
Na poziomie licytującego
Zestaw filtrów na poziomie licytującego możesz pobrać, wysyłając żądanie HTTP GET do identyfikatora URI zasobu bidders.filterSets
, który ma ten format:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets/{filter set resource ID}
Oto przykład:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets/bidder-fs
Jeśli żądanie zostanie zrealizowane, serwer odpowiada, wysyłając kod stanu HTTP 200 OK
i pobrany zestaw filtrów:
{ "name": "bidders/12345678/filterSets/bidder-fs", "format": "DISPLAY", "environment": "APP", "platforms": ["TABLET", "MOBILE"], "absoluteDateRange": { "startDate": { "month": 11, "day": 26, "year": 2017 }, "endDate": { "month": 12, "day": 3, "year": 2017 } }, "timeSeriesGranularity": "DAILY" }
Poziom konta
Zestaw filtrów na poziomie konta możesz pobrać, wysyłając żądanie HTTP GET
do identyfikatora URI zasobu bidders.accounts.filterSets
, który ma następujący format:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets/{filter set resource ID}
Oto przykład:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets/account-fs
Jeśli żądanie zostanie zrealizowane, serwer odpowiada, wysyłając kod stanu HTTP 200 OK
i pobrany zestaw filtrów:
{ "name": "bidders/12345678/accounts/87654321/filterSets/account-fs", "format": "VIDEO", "environment": "WEB", "platforms": ["DESKTOP"], "absoluteDateRange": { "startDate": { "month": 11, "day": 26, "year": 2017 }, "endDate": { "month": 12, "day": 3, "year": 2017 } }, "timeSeriesGranularity": "DAILY" }
Wyświetlenie listy zestawów filtrów
Metoda listy zwraca tylko zestawy filtrów dostępne na poziomie, na który jest wywoływana.
Na przykład konto licytującego nie będzie widzieć zestawów filtrów utworzonych samodzielnie przez
bidders.accounts.filterSets.create
przy połączeniu z: bidders.filterSets.list
.
Na poziomie licytującego
Aby pobrać wszystkie zestawy filtrów na poziomie licytującego w przypadku danego licytującego, wyślij żądanie HTTP GET
do identyfikatora URI zasobu bidders.filtersets
, który ma następujący format:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets
Oto przykład wszystkich zestawów filtrów na poziomie licytującego o identyfikatorze konta 12345678:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets
{ "filterSets": [{ "filterSetId": "99994", "name": "bidders/12345678/filterSets/test-b-1", "relativeDateRange": { "durationDays": 30 } }, { "realtimeTimeRange": { "startTimeStamp": "2017-11-15T12:30:30.072831583Z" }, "filterSetId": "99995", "name": "bidders/12345678/filterSets/test-b-2", "timeSeriesGranularity": "HOURLY" }, { "absoluteDateRange": { "endDate": { "day": 12, "month": 3, "year": 2017 }, "startDate": { "day": 26, "month": 11, "year": 2017 } }, "filterSetId": "99996", "name": "bidders/12345678/filterSets/bidder-fs", "timeSeriesGranularity": "DAILY", "platforms": ["TABLET", "MOBILE"], "environment": "APP", "format": "DISPLAY" } ] }
Poziom konta
Aby pobrać wszystkie zestawy filtrów na poziomie konta dla danego konta, wysyłaj żądanie HTTP GET
do identyfikatora URI zasobu bidders.accounts.filtersets
, który ma następujący format:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets
Oto przykład listy wszystkich zestawów filtrów na poziomie konta dla konta podrzędnego o identyfikatorze 87654321:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets
{ "filterSets": [{ "realtimeTimeRange": { "startTimeStamp": "2017-11-19T04:24:43.252893487Z" }, "filterSetId": "99997", "name": "bidders/12345678/accounts/87654321/filterSets/test-a-1", "timeSeriesGranularity": "DAILY" }, { "absoluteDateRange": { "endDate": { "day": 3, "month": 12, "year": 2017 }, "startDate": { "day": 26, "month": 11, "year": 2017 } }, "filterSetId": "99998", "name": "bidders/12345678/accounts/87654321/filterSets/account-fs", "timeSeriesGranularity": "DAILY", "platforms": ["DESKTOP"], "environment": "WEB", "format": "VIDEO" } ] }
Usuwanie zestawu filtrów
Aby usunąć wszystkie trwałe zestawy filtrów, które nie są plikami, możesz użyć metody delete
jest potrzebna dłużej. Może usuwać tylko zestawy filtrów dostępne na poziomie, na który jest wywoływany.
na przykład konto licytującego nie może usunąć zestawu filtrów utworzonego za pomocą parametru bidders.accounts.filterSets.create
dzięki bidders.filterSets.delete
.
Na poziomie licytującego
Aby usunąć zestaw filtrów na poziomie licytującego dla danego konta, wyślij żądanie HTTP DELETE
do identyfikatora URI zasobu bidders.filtersets
, który ma następujący format:
DELETE https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets/{filter set resource ID}
Oto przykład usuwania zestawu filtrów na poziomie licytującego:
DELETE https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets/test-b-2
Jeśli żądanie się powiedzie, treść żądania będzie pusta. Podany zestaw filtrów nie będzie już dostępny.
Poziom konta
Aby usunąć zestaw filtrów na poziomie konta dla danego konta, wysyłaj żądanie HTTP DELETE
do identyfikatora URI zasobu bidders.accounts.filtersets
, który ma następujący format:
DELETE https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets/{filter set resource ID}
Oto przykład usuwania zestawu filtrów na poziomie konta:
DELETE https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets/test-a-1
Jeśli żądanie się powiedzie, treść żądania będzie pusta. Podany zestaw filtrów nie będzie już dostępny.
Pobieranie danych dotyczących rozwiązywania problemów z RTB
Wszystkie zasoby do rozwiązywania problemów z RTB używane do otrzymywania danych działają w podobny sposób – mają
jedna metoda wyświetlania danych dla zbioru filtrów określonego za pomocą ścieżki filterSetName
. Od wybranego zestawu filtrów zależy, jakie filtry i ustawienia zostaną zastosowane
zapytań dotyczących danych. Wywołanie tych zasobów z poziomu licytującego spowoduje zwrócenie danych zbiorczych
z konta licytującego i wszystkich powiązanych z nim kont podrzędnych, natomiast wywołanie z poziomu konta
zwracają dane dotyczące tylko konta indywidualnego.
Dane o stawkach
Zasób bidMetrics
służy do pobierania wskaźników mierzonych w
liczby stawek. W ten sposób możesz np. określić łączną liczbę stawek w
w wybranym okresie, a ile z nich nie zostało odfiltrowanych z aukcji, wygrało wyświetlenie.
itp. Podobnie jak w przypadku wszystkich innych zasobów do rozwiązywania problemów z RTB, które służą do zbierania danych, używa tylko metody list
.
Wyświetl dane o stawkach na poziomie licytującego
Aby wyświetlić dane o stawkach na poziomie licytującego dla danego zestawu filtrów, wyślij żądanie HTTP GET
do identyfikatora URI zasobu bidders.filtersets.bidMetrics
, który ma następujący format:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets/{filter set resource ID}/bidMetrics
Oto przykład danych o stawkach na poziomie licytującego:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets/bidder-fs/bidMetrics
Jeśli żądanie zostanie zrealizowane, serwer w odpowiedzi przesyła kod stanu 200 OK
i treści zawierające wiersze danych dotyczące określonych wymiarów i dokładności.
{ "bidMetricsRows": [{ "bids": { "value": "6160" }, "bidsInAuction": { "value": "5698" }, "billedImpressions": { "value": "1196" }, "impressionsWon": { "value": "2920" }, "measurableImpressions": { "value": "1160" }, "rowDimensions": { "timeInterval": { "endTime": "2017-11-29T08:00:00Z", "startTime": "2017-11-28T08:00:00Z" } }, "viewableImpressions": { "value": "683" } }, { "bids": { "value": "104288" }, "bidsInAuction": { "value": "94016" }, "billedImpressions": { "value": "99" }, "impressionsWon": { "value": "125" }, "measurableImpressions": { "value": "94" }, "rowDimensions": { "timeInterval": { "endTime": "2017-11-30T08:00:00Z", "startTime": "2017-11-29T08:00:00Z" } }, "viewableImpressions": { "value": "87" } }, { "bids": { "value": "3999" }, "bidsInAuction": { "value": "3631" }, "billedImpressions": { "value": "618" }, "impressionsWon": { "value": "1819" }, "measurableImpressions": { "value": "604" }, "rowDimensions": { "timeInterval": { "endTime": "2017-12-01T08:00:00Z", "startTime": "2017-11-30T08:00:00Z" } }, "viewableImpressions": { "value": "369" } }, { "bids": { "value": "15" }, "bidsInAuction": { "value": "3" }, "billedImpressions": {}, "impressionsWon": { "value": "3" }, "measurableImpressions": {}, "rowDimensions": { "timeInterval": { "endTime": "2017-12-02T08:00:00Z", "startTime": "2017-12-01T08:00:00Z" } }, "viewableImpressions": {} } ] }
Uwaga: pola z wartością 0 dla danego wskaźnika nie pojawią się w odpowiedzi.
Puste wskaźniki billedImpressions
i measurableImpressions
powyżej
wskazują, że zarówno wartość, jak i wariancja dla tych wartości mają wartość 0.
Ostrzeżenie: w przypadku jakiegokolwiek podziału danych w odpowiedzi odpowiedź nie będzie
uwzględnij wiersze, jeśli nie zawierają one żadnych danych innych niż zero. Na przykład, gdy plik
określono timeSeriesGranularity
, odpowiedź nie będzie zawierać wierszy dla żadnego
timeInterval
w określonym zakresie czasu zestawu filtrów, w którym wszystkie dane mają wartość zero.
Wyświetlanie danych o stawkach na poziomie konta
Aby wyświetlić dane o stawkach na poziomie konta dla określonego zestawu filtrów, wyślij żądanie HTTP GET
do identyfikatora URI zasobu bidders.accounts.filtersets.bidMetrics
, który zawiera parametr
w tym formacie:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets/{filter set resource ID}/bidMetrics
Oto przykład danych o stawkach na poziomie konta:
GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets/account-fs/bidMetrics
Jeśli żądanie zostanie zrealizowane, serwer w odpowiedzi przesyła kod stanu 200 OK
i treści zawierające wiersze danych dotyczące określonych wymiarów i dokładności.
{ "bidMetricsRows": [{ "bids": { "value": "1748" }, "bidsInAuction": { "value": "1421" }, "billedImpressions": { "value": "301" }, "impressionsWon": { "value": "915" }, "measurableImpressions": { "value": "298" }, "rowDimensions": { "timeInterval": { "endTime": "2017-12-01T08:00:00Z", "startTime": "2017-11-30T08:00:00Z" } }, "viewableImpressions": { "value": "172" } }, { "bids": { "value": "6" }, "bidsInAuction": { "value": "2" }, "billedImpressions": {}, "impressionsWon": { "value": "1" }, "measurableImpressions": {}, "rowDimensions": { "timeInterval": { "endTime": "2017-12-02T08:00:00Z", "startTime": "2017-12-01T08:00:00Z" } }, "viewableImpressions": {} } ] }
Uwaga: pola z wartością 0 dla danego wskaźnika nie pojawią się w odpowiedzi.
puste wskaźniki billedImpressions
i measurableImpressions
powyżej wskazują
że zarówno wartość, jak i wariancja dla tych wartości mają wartość 0.
Ostrzeżenie: w przypadku podziału danych w odpowiedzi odpowiedź nie będzie zawierać
wierszy, jeśli nie zawierają one ani jednej wartości innej niż zero. Na przykład, gdy plik
określono timeSeriesGranularity
, odpowiedź nie będzie zawierać wierszy dla żadnego
timeInterval
w określonym zakresie czasowym zestawu filtrów, w którym wszystkie dane wynoszą 0.