Zgłaszanie strumieniowego przesyłania danych za pomocą GoogleAdsService
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Aby pobrać jednostki interfejsu Google Ads API i dane raportowania, użyj jednej z tych metod:
Oto główne różnice między tymi 2 metodami:
|
GoogleAdsService.SearchStream |
GoogleAdsService.Search |
Odpowiednie do kodu produkcyjnego |
Tak |
Tak |
Usługa |
GoogleAdsService |
GoogleAdsService |
Scenariusz |
Pobieranie obiektów i raportów |
Pobieranie obiektów i raportów |
Odpowiedź |
Strumień GoogleAdsRow obiektów |
Strony z GoogleAdsRow obiektami |
Pola odpowiedzi |
Tylko te, które zostały określone w zapytaniu |
Tylko te, które zostały określone w zapytaniu |
Limity dzienne |
Limity dzienne na podstawie poziomów dostępu |
Limity dzienne na podstawie poziomów dostępu |
SearchStream
a Search
Search
może wysyłać wiele żądań podzielonych na strony, aby pobrać cały raport, natomiast SearchStream
wysyła jedno żądanie i nawiązuje trwałe połączenie z interfejsem Google Ads API niezależnie od rozmiaru raportu.
W przypadku SearchStream
pakiety danych zaczynają się pobierać natychmiast, a cały wynik jest buforowany w buforze danych. Twój kod może zacząć odczytywać dane z bufora bez konieczności czekania na zakończenie całego strumienia.
Eliminując czas potrzebny na wysłanie żądania każdej strony odpowiedzi Search
, w zależności od aplikacji SearchStream
może zapewnić lepszą wydajność niż stronicowanie, zwłaszcza w przypadku większych raportów.
Przykład
W tym przykładzie analizujemy raport składający się z 100,000
wierszy. W tabeli poniżej znajdziesz zestawienie różnic w księgowaniu między tymi 2 metodami.
|
SearchStream |
Szukaj |
Rozmiar strony |
Nie dotyczy |
10 000 wierszy na stronę |
Liczba żądań do interfejsu API |
1 żądanie |
10 zgłoszeń |
Liczba odpowiedzi interfejsu API |
1 ciągły strumień |
10 odpowiedzi |
W większości przypadków zalecamy używanie atrybutu SearchStream
zamiast Search
z tych powodów:
W przypadku raportów na jednej stronie (poniżej 10 tys. wierszy): nie ma istotnych różnic w skuteczności między tymi 2 metodami.
W przypadku raportów wielostronicowych: SearchStream
jest zwykle szybsze, ponieważ pozwala uniknąć wielu podróży w obie strony, a odczyt lub zapis z pamięci podręcznej dysku ma mniejsze znaczenie.
Ograniczenia liczby żądań
Limity dzienne w przypadku obu metod są zgodne ze standardowymi limitami i poziomami dostępu tokena dewelopera. Pojedyncze zapytanie lub raport jest traktowany jako 1 operacja niezależnie od tego, czy wynik jest podzielony na strony czy przesyłany strumieniowo.
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-08-27 UTC.
[null,null,["Ostatnia aktualizacja: 2025-08-27 UTC."],[[["\u003cp\u003eThe Google Ads API offers two primary methods for retrieving data: \u003ccode\u003eSearchStream\u003c/code\u003e and \u003ccode\u003eSearch\u003c/code\u003e, both suitable for production environments and fetching objects and reports.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eSearchStream\u003c/code\u003e delivers results as a continuous stream, ideal for large reports, while \u003ccode\u003eSearch\u003c/code\u003e provides paginated responses.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eSearchStream\u003c/code\u003e often offers performance advantages by reducing network round trips, especially for reports exceeding 10,000 rows.\u003c/p\u003e\n"],["\u003cp\u003eBoth methods are subject to the same daily limits and access levels, with a single query or report counting as one operation regardless of the method.\u003c/p\u003e\n"],["\u003cp\u003eGoogle recommends using \u003ccode\u003eSearchStream\u003c/code\u003e for most use cases due to its performance benefits for larger reports.\u003c/p\u003e\n"]]],[],null,["# Report streaming using GoogleAdsService\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nTo retrieve Google Ads API entities and reporting data, use one of these methods:\n\n- [`GoogleAdsService.SearchStream`](/google-ads/api/reference/rpc/v21/GoogleAdsService/SearchStream)\n- [`GoogleAdsService.Search`](/google-ads/api/reference/rpc/v21/GoogleAdsService/Search)\n\nHere are the high-level distinctions for the two methods:\n\n| | GoogleAdsService.SearchStream | GoogleAdsService.Search |\n| Suitable for production code | **Yes** | **Yes** |\n| Service | [`GoogleAdsService`](/google-ads/api/reference/rpc/v21/GoogleAdsService) | [`GoogleAdsService`](/google-ads/api/reference/rpc/v21/GoogleAdsService) |\n| Scenario | Fetching objects and reports | Fetching objects and reports |\n| Response | **Stream** of [`GoogleAdsRow`](/google-ads/api/reference/rpc/v21/GoogleAdsRow) objects | Pages of [`GoogleAdsRow`](/google-ads/api/reference/rpc/v21/GoogleAdsRow) objects |\n| Response's fields | Only those specified in the query | Only those specified in the query |\n| Daily limits | Daily limits based on [access levels](/google-ads/api/docs/access-levels) | Daily limits based on [access levels](/google-ads/api/docs/access-levels) |\n|------------------------------|----------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|\n\n`SearchStream` versus `Search`\n------------------------------\n\nWhile [`Search`](/google-ads/api/reference/rpc/v21/GoogleAdsService/Search) can send multiple\npaginated requests to download the entire report, [`SearchStream`](/google-ads/api/reference/rpc/v21/GoogleAdsService/SearchStream) sends a single request and\ninitiates a persistent connection with the Google Ads API regardless of report size.\n\nFor `SearchStream`, data packets start to download immediately with the entire\nresult cached in a data buffer. Your code can start reading the buffered data\nwithout having to wait for the entire stream to finish.\n\nBy eliminating the round-trip network time required to request each individual\npage of a `Search` response, depending on your app, `SearchStream` can offer\nimproved performance over paging, especially for bigger reports.\n\n### Example\n\nThis example looks at a report that consists of `100,000` rows. The following\ntable breaks down the accounting differences between the two methods.\n\n| | SearchStream | Search |\n| Page size | Not Applicable | 10,000 rows per page |\n| Number of API requests | 1 request | 10 requests |\n| Number of API responses | 1 continuous stream | 10 responses |\n|-------------------------|---------------------|----------------------|\n\n### Performance factors\n\nFor most use cases, we recommend `SearchStream` over `Search` for the following\nreasons:\n\n- For single page reports (under 10,000 rows): No significant performance\n differences between the two methods.\n\n- For multiple page reports: `SearchStream` is typically faster since multiple\n round trips are avoided, and reading or writing from disk cache is less of a\n factor.\n\n### Rate limits\n\nDaily limits for both methods adhere to the standard limits and [access\nlevels](/google-ads/api/docs/access-levels) of your developer token. A single query or report\nis counted as one operation regardless of the result being paged or streamed."]]