Este artigo inclui exemplos de como criar consultas para relatórios da Transferência de dados do Ad Manager. Saiba mais acerca dos ficheiros da Transferência de dados, inclusive como começar a recebê-los.
Tenha em atenção que este artigo chamava-se anteriormente "Guia detalhado da Transferência de dados".
Impressões não preenchidas
Impressões não preenchidas de NetworkImpressions
Para encontrar o número de impressões não preenchidas para um dia, consulte NetworkImpressions
para as entradas em que LineItemID
é 0
. Não existem impressões não preenchidas em NetworkBackfillImpressions
.
Código
SELECT COUNT(1) AS UnfilledImpressions FROM NetworkImpressions WHERE LineItemID = 0 AND Time >= ‘2020-01-01’ AND Time < ‘2020-01–02’
Resultados
Linha | UnfilledImpressions |
1 | 20000000 |
Impressões não preenchidas de NetworkRequests
Também pode encontrar o número de impressões não preenchidas ao consultar NetworkRequests
. Procure pedidos em que IsFilledRequest
seja falso. Não existem impressões não preenchidas em NetworkBackfillRequests
.
Código
SELECT COUNT(1) AS UnfilledImpressions FROM NetworkRequests WHERE NOT IsFilledRequest AND Time >= '2020-01-01' AND Time < '2020-01-02'
Resultados
Linha | UnfilledImpressions |
1 | 20000000 |
Impressões não preenchidas por URL
Os relatórios do Ad Manager podem mostrar impressões não preenchidas por bloco de anúncios ou tamanho pedido, mas não por URL. Inclua RefererURL
para ajudar a encontrar as dez principais páginas que geram impressões não preenchidas.
Código
SELECT RefererURL, COUNT(1) AS UnfilledImpressions FROM NetworkImpressions WHERE LineItemID = 0 AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY RefererURL ORDER BY UnfilledImpressions DESC LIMIT 10
Resultados
Linha | RefererURL |
UnfilledImpressions |
1 | http://example.com/ | 4903691 |
2 | http://example.com/url/a | 748271 |
3 | http://example.com/url/b | 383293 |
4 | http://example.com/url/c | 364355 |
5 | http://example.com/url/d | 326495 |
6 | http://example.net/ | 295346 |
7 | http://example.net/url/a | 291043 |
8 | http://example.net/url/b | 276106 |
9 | http://example.net/url/c | 231169 |
10 | http://example.net/url/d | 194988 |
Impressões não preenchidas por bloco de anúncios
Encontre os blocos de anúncios responsáveis pela maioria das impressões não preenchidas numa única página. Se usar o conetor do BigQuery, use a tabela de correspondência do bloco de anúncios para encontrar o nome dos blocos de anúncios. Uma vez que a tabela de correspondência contém dados do bloco de anúncios para cada dia, certifique-se de que limita os dados da tabela de correspondência a um dia.
Código
SELECT AdUnitID, Name AS AdUnitName, COUNT(1) AS UnfilledImpressions FROM NetworkImpressions AS NI INNER JOIN MatchTableAdUnit AS MTAU ON AdUnitID = ID AND LineItemID = 0 AND Time >= '2020-01-01' AND Time < '2020-01-02' AND RefererURL = 'https://example.com/' AND MTAU._DATA_DATE = '2020-01-01' GROUP BY AdUnitID, AdUnitName ORDER BY UnfilledImpressions DESC, AdUnitID LIMIT 10
Resultados
Linha | AdUnitID |
AdUnitName |
UnfilledImpressions |
1 | 95730695 | Nome do último nível A | 1123439 |
2 | 95033015 | Nome do último nível B | 1116622 |
3 | 95033615 | Nome do último nível C | 1102641 |
4 | 95049575 | Nome do último nível D | 772235 |
5 | 95734535 | Nome do último nível E | 744777 |
6 | 95584895 | Nome do último nível F | 27593 |
7 | 95045255 | Nome do último nível G | 7482 |
8 | 95343215 | Nome do último nível H | 1925 |
9 | 94977215 | Nome do último nível I | 19 |
10 | 95033375 | Nome do último nível J | 12 |
Impressões
Impressões por Product
e DealType
Utilize os campos Product
e DealType
na Transferência de dados para gerar relatórios comparáveis aos relatórios do Ad Manager que utilizam as dimensões "Canal de procura", "Canal programático" e "Tipo de otimização". Selecione as impressões de NetworkImpression
(em que LineItemID
não é zero) e NetworkBackfillImpressions
.
Código
SELECT Product, DealType, COUNT(1) AS Impressions FROM NetworkImpressions WHERE LineItemID != 0 AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY Product, DealType UNION ALL SELECT Product, DealType, COUNT(1) AS Impressions FROM NetworkBackfillImpressions WHERE Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY Product, DealType ORDER BY Product, DealType
Resultados
Linha | Produto |
DealType |
Contagem |
1 | Ad Exchange | null | 60000000 |
2 | Ad Exchange | Leilão privado | 2000000 |
3 | Servidor de anúncios | null | 40000000 |
4 | Servidor de anúncios | Oferta preferida | 1000000 |
5 | Servidor de anúncios | Garantido de forma programática | 1200000 |
6 | Lances de troca | null | 15000000 |
7 | Lances de troca | Oferta preferida | 20000 |
8 | Lances de troca | Leilão privado | 500000 |
9 | Análise inicial | null | 100 000 |
Parâmetros do relatório
Execute um relatório nos relatórios do Ad Manager com a mesma data. Escolha as seguintes dimensões e métricas:
- Dimensões:
- Canal de procura
- Canal programático
- Tipo de otimização
- Métricas:
- Total de impressões
- Total de impressões
Resultados
Linha | Canal de procura | Canal programático | Tipo de otimização | Total de impressões |
1 | Open Bidding | Leilão aberto | Todo o outro tráfego | 9 000 000 |
2 | Open Bidding | Leilão aberto | Concorrência otimizada | 7000 |
3 | Open Bidding | Leilão aberto | CPM alvo | 5 993 000 |
4 | Open Bidding | Acordos preferidos | Todo o outro tráfego | 20 000 |
5 | Open Bidding | Leilão privado | Todo o outro tráfego | 496 000 |
6 | Open Bidding | Leilão privado | Concorrência otimizada | 4000 |
7 | Servidor de anúncios | (não aplicável) | Todo o outro tráfego | 40 000 000 |
8 | Servidor de anúncios | Acordos preferidos | Todo o outro tráfego | 1 000 000 |
9 | Servidor de anúncios | Garantido de forma programática | Todo o outro tráfego | 1 200 000 |
10 | Ad Exchange | Leilão aberto | Todo o outro tráfego | 48 000 000 |
11 | Ad Exchange | Leilão aberto | Análise inicial | 100 000 |
12 | Ad Exchange | Leilão aberto | Concorrência otimizada | 10 000 |
13 | Ad Exchange | Leilão aberto | CPM alvo | 11 990 000 |
14 | Ad Exchange | Leilão privado | Todo o outro tráfego | 1 995 000 |
15 | Ad Exchange | Leilão privado | Concorrência otimizada | 5000 |
Direta
- Transferência de dados:
Product
=Ad Server
DealType
énull
- Linha 3: 40 000 000
- Relatórios do Ad Manager:
- Canal de procura = "Servidor de anúncios"
- Canal programático = "(Não aplicável)"
- Tipo de otimização = "Todo o outro tráfego"
- Linha 7: 40 000 000
Acordos preferidos
- Transferência de dados:
Product
=Ad Server
DealType
éPreferred Deal
- Linha 4: 1 000 000
- Relatórios do Ad Manager:
- Canal de procura = "Servidor de anúncios"
- Canal programático = "Acordos preferidos"
- Tipo de otimização = "Todo o outro tráfego"
- Linha 8: 1 000 000
- Transferência de dados:
Product
=Exchange Bidding
DealType
éPreferred Deal
- Linha 7: 20 000
-
- Relatórios do Ad Manager:
- Canal de procura = "Open Bidding"
- Canal programático = "Acordos preferidos"
- Tipo de otimização = "Todo o outro tráfego"
- Linha 4: 20 000
Garantido de forma programática
- Transferência de dados:
Product
=Ad Server
DealType
éProgrammatic Guaranteed
- Linha 5: 1 200 000
- Relatórios do Ad Manager:
- Canal de procura = "Servidor de anúncios"
- Canal programático = "Garantido de forma programática"
- Tipo de otimização = "Todo o outro tráfego"
- Linha 9: 1 200 000
Leilão aberto do Ad Exchange (não incluindo a Análise inicial)
- Transferência de dados:
Product
=Ad Exchange
DealType
énull
- Linha 1: 60,000,000
- Relatórios do Ad Manager:
- Canal de procura = "Ad Exchange"
- Canal programático = "Leilão aberto"
- Tipo de otimização = "Todo o outro tráfego", "CPM alvo", "Concorrência otimizada"
- Linha 10, Linha 12 e Linha 13, total: 48 000 000 + 10 000 + 11 990 000 = 60 000 000
Leilão privado do Ad Exchange
- Transferência de dados:
Product
=Ad Exchange
DealType
éPrivate Auction
- Linha 2: 2,000,000
- Relatórios do Ad Manager:
- Canal de procura = "Ad Exchange"
- Canal programático = "Leilão privado"
- Tipo de otimização = "Todo o outro tráfego", "Concorrência otimizada"
- Linha 14 e linha 15, total: 1 995 000 + 5000 = 2 000 000
Leilão aberto do Open Bidding
- Transferência de dados:
Product
=Exchange Bidding
DealType
énull
- Linha 6: 15 000 000
- Relatórios do Ad Manager:
- Canal de procura = "Open Bidding"
- Canal programático = "Leilão aberto"
- Tipo de otimização = "Todo o outro tráfego", "CPM alvo", "Concorrência otimizada"
- Linha 1, Linha 2 e Linha 3, total: 9 000 000 + 7000 + 5 993 000 = 15 000 000
Leilão privado do Open Bidding
- Transferência de dados:
Product
=Exchange Bidding
DealType
éPrivate Auction
- Linha 8: 500 000
- Relatórios do Ad Manager:
- Canal de procura = "Open Bidding"
- Canal programático = "Leilão privado"
- Tipo de otimização = "Todo o outro tráfego", "Concorrência otimizada"
- Linha 5 e linha 6, total: 496 000 + 4000 = 500 000
Análise inicial
- Transferência de dados:
Product
=First Look
DealType
énull
- Linha 9: 100 000
- Relatórios do Ad Manager:
- Canal de procura = "Ad Exchange"
- Canal programático = "Leilão aberto"
- Tipo de otimização = "Análise inicial"
- Linha 11: 100 000
Revenue
Receita para um elemento publicitário de CPM
O ficheiro NetworkImpressions
não contém dados de receita, mas se utilizar o conetor do BigQuery, pode utilizar a Tabela de correspondência de elementos publicitários para encontrar a taxa de CPM. Caso contrário, use a API Ad Manager para encontrar a taxa de um elemento publicitário. Encontre a receita de um determinado elemento publicitário de CPM para um determinado intervalo de datas contando as impressões, multiplicando pela taxa e dividindo por 1000. Uma vez que a tabela de correspondência contém dados do bloco de anúncios para cada dia, certifique-se de que limita os dados da tabela de correspondência a um dia.
Código
WITH Impression_Data AS ( SELECT LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE LineItemID = 123456789 AND Time >= '2020-01-01' AND Time < '2020-01-11' GROUP BY LineItemID ) SELECT LineItemID, Impressions, CostPerUnitInNetworkCurrency AS Rate, CostType, ((Impressions * CostPerUnitInNetworkCurrency) / 1000) AS Revenue FROM Impression_Data JOIN MatchTableLineItem ON LineItemID = ID WHERE MatchTableLineItem._DATA_DATE = '2020-01-10'
Resultados
Linha | LineItemID |
Impressões |
Taxa |
CostType |
Receita |
1 | 123456789 | 21324 | 3,5 | CPM | 74 634 |
Receita para um elemento publicitário de CPD
Tal como acontece com os elementos publicitários de CPM, pode utilizar a Tabela de correspondência de elementos publicitários ou a API Ad Manager para encontrar a taxa de CPD de um elemento publicitário. Uma vez que a tabela de correspondência contém dados do bloco de anúncios para cada dia, certifique-se de que limita os dados da tabela de correspondência a um dia. Para encontrar a receita de um determinado elemento publicitário de CPD, conte o número de dias em que as impressões foram publicadas e multiplique pela taxa. É recomendável incluir o número de impressões publicadas para encontrar o eCPM médio.
Código
WITH Impression_Data AS ( SELECT SUBSTR(Time, 0, 10) AS Date, LineItemID, CostPerUnitInNetworkCurrency AS Rate, CostType, COUNT(1) AS Impressions FROM NetworkImpressions JOIN MatchTableLineItem ON LineItemID = ID WHERE LineItemID = 123456789 AND MatchTableLineItem._DATA_DATE = '2020-01-01' GROUP BY Date, LineItemID, Rate, CostType ) SELECT LineItemID, COUNT(1) AS Days, CostType, Rate, (COUNT(1) * Rate) AS Revenue, SUM(Impressions) AS Impressions, ROUND((COUNT(1) * Rate) / SUM(Impressions) * 1000, 2) AS Average_eCPM FROM Impression_Data GROUP BY LineItemID, CostType, Rate
Resultados
Linha | LineItemID |
Dias |
CostType |
Taxa |
Receita |
Impressões |
Average_eCPM |
1 | 123456789 | 5 | CPD | 4000,0 | 20000,0 | 7000000 | 2,86 |
Receita para um elemento publicitário de CPC
Tal como acontece com os elementos publicitários de CPM, pode utilizar a Tabela de correspondência de elementos publicitários ou a API Ad Manager para encontrar a taxa de CPC de um elemento publicitário. Uma vez que a tabela de correspondência contém dados do bloco de anúncios para cada dia, certifique-se de que limita os dados da tabela de correspondência a um dia. Para encontrar a receita de um determinado elemento publicitário de CPC para um determinado intervalo de datas, conte os cliques e multiplique pela taxa. É recomendável incluir o número de impressões publicadas para encontrar o eCPM médio.
Código
WITH Impression_Data AS ( SELECT LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE LineItemID = 123456789 GROUP BY LineItemID ), Click_Data AS ( SELECT LineItemID, CostPerUnitInNetworkCurrency AS Rate, CostType, COUNT(1) AS Clicks FROM NetworkClicks JOIN MatchTableLineItem ON LineItemID = ID WHERE LineItemID = 123456789 AND MatchTableLineItem._DATA_DATE = '2020-01-01' GROUP BY LineItemID, Rate, CostType ) SELECT LineItemID, CostType, Impressions, Clicks, ROUND(Clicks / Impressions * 100, 2) AS CTR, Rate, (Clicks * Rate) AS Revenue, ROUND((Clicks * Rate) / Impressions * 1000, 2) AS Average_eCPM FROM Impression_Data JOIN Click_Data USING (LineItemID)
Resultados
Linha | LineItemID |
CostType |
Impressões |
Cliques |
CTR |
Taxa |
Receita |
Average_eCPM |
1 | 123456789 | CPC | 140000 | 23 | 0,02 | 15,5 | 356,5 | 2,55 |
Receita para um elemento publicitário de vCPM
Tal como acontece com os elementos publicitários de CPM, pode utilizar a Tabela de correspondência de elementos publicitários ou a API Ad Manager para encontrar a taxa de vCPM de um elemento publicitário. Uma vez que a tabela de correspondência contém dados do bloco de anúncios para cada dia, certifique-se de que limita os dados da tabela de correspondência a um dia. Para encontrar a receita de um determinado elemento publicitário de vCPM, conte as impressões visíveis de NetworkActiveViews
e multiplique pela taxa. É recomendável incluir o número de impressões publicadas para encontrar o eCPM médio.
Código
WITH Active_View_Data AS ( SELECT LineItemID, COUNT(1) AS ViewableImpressions FROM NetworkActiveViews WHERE LineItemID = 123456789 GROUP BY LineItemID ), Impression_Data AS ( SELECT LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE LineItemID = 123456789 GROUP BY LineItemID ) SELECT Active_View_Data.LineItemID, CostType, Impressions, ViewableImpressions, CostPerUnitInNetworkCurrency AS Rate, (CostPerUnitInNetworkCurrency * ViewableImpressions / 1000) AS Revenue, ROUND((CostPerUnitInNetworkCurrency * ViewableImpressions / 1000) / Impressions * 1000, 2) AS Average_eCPM FROM Impression_Data JOIN Active_View_Data USING (LineItemID) JOIN MatchTableLineItem ON Active_View_Data.LineItemID = ID WHERE MatchTableLineItem._DATA_DATE = '2020-08-01'
Resultados
Linha | LineItemID |
CostType |
Impressões |
ViewableImpressions |
Taxa |
Receita |
Average_eCPM |
1 | 123456789 | CPMAV | 500000 | 150000 | 10 | 1500,0 | 3,0 |
Receita para um anunciante
Para encontrar a receita de um determinado anunciante para um determinado intervalo de datas, conte as impressões de cada elemento publicitário e multiplique pela taxa. Utilize a tabela de correspondência de elementos publicitários para encontrar a taxa e a Tabela de correspondência de empresas para encontrar o nome do anunciante.
Código
WITH Impression_Data AS ( SELECT AdvertiserID, LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE AdvertiserID = 111222333 AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY AdvertiserID, LineItemID ) SELECT AdvertiserID, MTC.Name AS CompanyName, LineItemID, Impressions, CostPerUnitInNetworkCurrency AS Rate, CostType, ((Impressions * CostPerUnitInNetworkCurrency) / 1000) AS Revenue FROM Impression_Data JOIN MatchTableLineItem AS MTLI ON LineItemID = MTLI.ID JOIN MatchTableCompany AS MTC ON AdvertiserID = MTC.ID WHERE MTLI._DATA_DATE = '2020-01-01' AND MTC._DATA_DATE = '2020-01-01'
Resultados
Linha | AdvertiserID |
CompanyName |
LineItemID |
Impressões |
Taxa |
CostType |
Receita |
1 | 111222333 | ABC | 111111111 | 20212 | 5,0 | CPM | 101,06 |
2 | 111222333 | ABC | 222222222 | 58321 | 3,0 | CPM | 174,963 |
3 | 111222333 | ABC | 333333333 | 82772 | 8,5 | CPM | 703,562 |
4 | 111222333 | ABC | 444444444 | 19003 | 3,25 | CPM | 61,7597 |
Publicações do código
Para redes com o alternativo ativado, a Transferência de dados contabiliza uma publicação do código para cada elemento publicitário selecionado na cadeia de alternativos, enquanto os relatórios do Ad Manager contabilizam uma publicação do código apenas para o primeiro elemento publicitário selecionado na cadeia de alternativos. A Transferência de dados também contabiliza uma publicação do código para os anúncios associados, enquanto os relatórios do Ad Manager não fazem esta contabilização. Se pretender que o relatório da Transferência de dados corresponda ao relatório do Ad Manager da melhor forma possível, a contagem do código só é publicada quando VideoFallbackPosition = 0
e IsCompanion
for false
. As publicações do código da Mediação na Transferência de dados podem não corresponder às publicações do código da Mediação nos relatórios do Ad Manager. Consoante a sua implementação, podem existir outras diferenças entre as contagens de publicações do código na Transferência de dados e nos relatórios do Ad Manager.
Publicações do código, impressões e taxa de renderização por elemento publicitário para um único anunciante
Veja a frequência com que as publicações do código se transformam em impressões para cada elemento publicitário de um anunciante direto. Como estamos a analisar um anunciante direto, estas publicações do código só estarão em NetworkCodeServes
e as impressões estarão apenas em NetworkImpressions
.
Código
WITH Code_Serve_Data AS ( SELECT LineItemID, COUNT(1) AS CodeServes FROM NetworkCodeServes WHERE AdvertiserID = 12345678 AND VideoFallbackPosition = 0 AND IsCompanion IS FALSE AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY LineItemID ), Impression_Data AS ( SELECT LineItemID, COUNT(1) AS Impressions FROM NetworkImpressions WHERE AdvertiserID = 12345678 AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY LineItemID ) SELECT LineItemID, CodeServes, Impressions, ROUND((Impressions / CodeServes) * 100, 2) AS RenderRate FROM Code_Serve_Data JOIN Impression_Data USING (LineItemID) ORDER BY RenderRate DESC
Resultados
Linha | LineItemID |
CodeServes |
Impressões |
RenderRate |
1 | 1111111111 | 6000 | 2600 | 43,33 |
2 | 2222222222 | 1000000 | 371200 | 37,12 |
3 | 3333333333 | 50000 | 17550 | 35,1 |
4 | 4444444444 | 800000 | 275000 | 34,38 |
5 | 5555555555 | 1500000 | 400000 | 26,66 |
Publicações do código, impressões e taxa de renderização por categoria de dispositivos e tamanho do criativo publicados
Inclua a Categoria do dispositivo e o Tamanho do criativo fornecido para ver como as taxas de renderização variam para um pedido de um anunciante.
Código
WITH Code_Serve_Data AS ( SELECT LineItemID, CreativeSizeDelivered, DeviceCategory, COUNT(1) AS CodeServes FROM NetworkCodeServes WHERE AdvertiserID = 87654321 AND OrderID = 1111111111 AND VideoFallbackPosition = 0 AND IsCompanion IS FALSE GROUP BY LineItemID, CreativeSizeDelivered, DeviceCategory ), Impression_Data AS ( SELECT LineItemID, CreativeSizeDelivered, DeviceCategory, COUNT(1) AS Impressions FROM NetworkImpressions WHERE AdvertiserID = 87654321 AND OrderID = 1111111111 GROUP BY LineItemID, CreativeSizeDelivered, DeviceCategory ) SELECT LineItemID, DeviceCategory, CreativeSizeDelivered, CodeServes, Impressions, ROUND((Impressions / CodeServes) * 100, 2) AS RenderRate FROM Code_Serve_Data JOIN Impression_Data USING (LineItemID, CreativeSizeDelivered, DeviceCategory) ORDER BY LineItemID, CreativeSizeDelivered, DeviceCategory
Resultados
Linha | LineItemID |
DeviceCategory |
CreativeSizeDelivered |
CodeServes |
Impressões |
RenderRate |
1 | 6666666666 | Smart TV | Vídeo/sobreposição | 100 | 40 | 40,0 |
2 | 6666666666 | Computador | Vídeo/sobreposição | 20000 | 9000 | 45,0 |
3 | 6666666666 | Smartphone | Vídeo/sobreposição | 32000 | 25000 | 78,13 |
4 | 6666666666 | Tablet | Vídeo/sobreposição | 1000 | 800 | 80,0 |
5 | 7777777777 | Smart TV | 300 x 250 | 200 | 190 | 95,0 |
6 | 7777777777 | Computador | 300 x 250 | 185000 | 184000 | 99,46 |
7 | 7777777777 | Smartphone | 300 x 250 | 225000 | 220000 | 97,77 |
8 | 7777777777 | Tablet | 300 x 250 | 10 000 | 9800 | 98,0 |
9 | 7777777777 | Smart TV | 300 x 50 | 50 | 50 | 100,0 |
10 | 7777777777 | Computador | 300 x 50 | 1000 | 900 | 90,0 |
11 | 7777777777 | Smartphone | 300 x 50 | 90000 | 80000 | 88,89 |
12 | 7777777777 | Tablet | 300 x 50 | 800 | 750 | 93,75 |
Visibilidade
Pode encontrar os dados da visibilidade nos ficheiros Impressões e Vista ativa através dos campos ActiveViewEligibleCount
, ActiveViewMeasurableCount
e ActiveViewViewableCount
. Leia mais acerca destes campos e de como os respetivos valores são definidos.
A visibilidade para um período pode ser calculada somando os valores encontrados nos ficheiros ou juntando os eventos individuais e, em seguida, somando os valores. Pode haver ligeiras diferenças entre estas duas estratégias, explicadas em detalhe abaixo.
Impressões elegíveis, impressões mensuráveis e impressões visíveis (no total)
Encontre o número de impressões elegíveis, mensuráveis e visíveis para um determinado dia. Conforme mencionado acima, tem de usar os ficheiros de impressão e os ficheiros da Vista ativa.
Código
DECLARE startdate STRING DEFAULT '2023-01-01 00:00:00';
DECLARE enddate STRING DEFAULT '2023-01-02 00:00:00';
WITH ActiveView_Data AS (
SELECT DeviceCategory, VideoPosition,
SUM(IFNULL(ActiveViewMeasurableCount, 0)) AS ActiveViewMeasurableCount,
SUM(IFNULL(ActiveViewViewableCount, 0)) AS ActiveViewViewableCount
FROM (
SELECT
DeviceCategory, VideoPosition,
SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount,
SUM(ActiveViewViewableCount) AS ActiveViewViewableCount
FROM
NetworkActiveViews
WHERE Time >= startdate AND Time < enddate
GROUP BY DeviceCategory, VideoPosition
UNION ALL
SELECT
DeviceCategory, VideoPosition,
SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount,
SUM(ActiveViewViewableCount) AS ActiveViewViewableCount
FROM
NetworkBackfillActiveViews
WHERE Time >= startdate AND Time < enddate
GROUP BY DeviceCategory, VideoPosition
)
GROUP BY DeviceCategory, VideoPosition
), Impression_Data AS (
SELECT DeviceCategory, VideoPosition,
SUM(IFNULL(ActiveViewEligibleCount, 0)) AS ActiveViewEligibleCount,
SUM(IFNULL(ActiveViewMeasurableCount, 0)) AS ActiveViewMeasurableCount
FROM (
SELECT
DeviceCategory, VideoPosition,
SUM(ActiveViewEligibleCount) AS ActiveViewEligibleCount,
SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount
FROM
NetworkImpressions
WHERE
Time >= startdate AND Time < enddate
AND LineItemID !=0
GROUP BY DeviceCategory, VideoPosition
UNION ALL
SELECT
DeviceCategory, VideoPosition,
SUM(ActiveViewEligibleCount) AS ActiveViewEligibleCount,
SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount
FROM
NetworkBackfillImpressions
WHERE
Time >= startdate AND Time < enddate
GROUP BY DeviceCategory, VideoPosition
)
GROUP BY DeviceCategory, VideoPosition
)
SELECT
DeviceCategory,
VideoPosition,
IFNULL(ActiveViewEligibleCount, 0) AS ActiveViewEligibleCount,
IFNULL(i.ActiveViewMeasurableCount, 0) + IFNULL(av.ActiveViewMeasurableCount, 0) AS ActiveViewMeasurableCount,
IFNULL(ActiveViewViewableCount, 0) AS ActiveViewViewableCount
FROM Impression_Data i
FULL JOIN ActiveView_Data av USING (DeviceCategory, VideoPosition)
ORDER BY DeviceCategory, VideoPosition
Resultados
Linha | EligibleImpressions |
MeasurableImpressions |
ViewableImpressions |
1 | 97000000 | 95000000 | 60000000 |
Impressões elegíveis, impressões mensuráveis e impressões visíveis (por impressão associada)
Encontre o número de impressões elegíveis, mensuráveis e visíveis para um determinado dia juntando os eventos individuais nos ficheiros de impressão e nos ficheiros de Vista ativa e, em seguida, somando os valores. Existem casos raros em que recebemos um ping de Vista ativa: visíveis, mas não recebemos um ping de impressão. Quando juntar dados da Vista ativa a dados de impressões, pode encontrar diferenças nas impressões mensuráveis e menos impressões visíveis em relação à primeira consulta, mostrada acima.
Código
DECLARE startdate STRING DEFAULT '2023-01-01 00:00:00'; DECLARE enddate STRING DEFAULT '2023-01-02 00:00:00'; WITH ActiveView_Data AS ( SELECT CAST(substr(Time, 0, 10) as Date) AS Date, Product, KeyPart, TimeUsec2, SUM(ActiveViewMeasurableCount) AS avAVMC, SUM(ActiveViewViewableCount) AS ActiveViewViewableCount FROM NetworkActiveViews WHERE Time >= startdate AND Time < enddate GROUP BY Date, Product, KeyPart, TimeUsec2 UNION ALL SELECT CAST(substr(Time, 0, 10) as Date) AS Date, Product, KeyPart, TimeUsec2, SUM(ActiveViewMeasurableCount) AS avAVMC, SUM(ActiveViewViewableCount) AS ActiveViewViewableCount FROM NetworkBackfillActiveViews WHERE Time >= startdate AND Time < enddate GROUP BY Date, Product, KeyPart, TimeUsec2 ), Impression_Data AS ( SELECT CAST(substr(i.Time, 0, 10) as Date) AS Date, i.Product, i.TimeUsec2, i.KeyPart, i.ActiveViewEligibleCount AS ActiveViewEligibleCount, i.ActiveViewMeasurableCount AS iAVMC, av.avAVMC AS avAVMC, av.ActiveViewViewableCount FROM NetworkImpressions i LEFT JOIN ActiveView_Data AS av USING (Product, Keypart, TimeUsec2) WHERE i.Time >= startdate AND i.Time < enddate AND i.LineItemID !=0 UNION ALL SELECT CAST(substr(i.Time, 0, 10) as Date) AS Date, i.Product, i.TimeUsec2, i.KeyPart, i.ActiveViewEligibleCount AS ActiveViewEligibleCount, i.ActiveViewMeasurableCount AS iAVMC, av.avAVMC AS avAVMC, av.ActiveViewViewableCount FROM NetworkBackfillImpressions i LEFT JOIN ActiveView_Data AS av USING (Product, Keypart, TimeUsec2) WHERE i.Time >= startdate AND i.Time < enddate ), Full_Data AS ( SELECT Date, Product, TimeUsec2, KeyPart, ActiveViewEligibleCount, CASE WHEN ActiveViewViewableCount >=1 THEN 1 ELSE (IFNULL(iAVMC, 0) + IFNULL(avAVMC, 0)) END AS ActiveViewMeasurableCount, IFNULL(ActiveViewViewableCount, 0) AS ActiveViewViewableCount FROM Impression_Data ) SELECT SUM(ActiveViewEligibleCount) AS ActiveViewEligibleCount, SUM(ActiveViewMeasurableCount) AS ActiveViewMeasurableCount, SUM(ActiveViewViewableCount) AS ActiveViewViewableCount FROM Full_Data
Resultados
Linha | EligibleImpressions |
MeasurableImpressions |
ViewableImpressions |
1 | 97000000 | 95000000 | 59900000 |
Chaves-valores
Utilização da chave
Descubra a frequência com que cada uma das chaves é apresentada num pedido de anúncio (apresentada em CustomTargeting
) e a frequência com que cada chave foi utilizada para publicar um elemento publicitário (apresentada em TargetedCustomCriteria
). As chaves ativas que não aparecem nos resultados ou que são usadas com pouca frequência podem ser boas candidatas para o arquivo de forma a permanecer abaixo do seu limite de chaves.
Código
WITH Key_Value_Pairs AS ( SELECT KVPair FROM NetworkImpressions CROSS JOIN UNNEST(SPLIT(CustomTargeting, ';')) AS KVPair WHERE CustomTargeting IS NOT NULL UNION ALL SELECT KVPair FROM NetworkBackfillImpressions CROSS JOIN UNNEST(SPLIT(CustomTargeting, ';')) AS KVPair WHERE CustomTargeting IS NOT NULL ), Targeted_Key_Value_Pairs AS ( SELECT TargetedKVPair FROM NetworkImpressions CROSS JOIN UNNEST(SPLIT(TargetedCustomCriteria, ';')) AS TargetedKVPair WHERE TargetedCustomCriteria IS NOT NULL UNION ALL SELECT TargetedKVPair FROM NetworkBackfillImpressions CROSS JOIN UNNEST (SPLIT(TargetedCustomCriteria, ';')) AS TargetedKVPair WHERE TargetedCustomCriteria IS NOT NULL ), Key_Usage AS ( SELECT REGEXP_REPLACE(KVPair, '=.+', '') AS Key, COUNT(1) AS KeyUsageCount FROM Key_Value_Pairs GROUP BY Key ), Key_Targeted_Usage AS ( SELECT REGEXP_REPLACE(TargetedKVPair, '(!)*(=|~).+', '') AS Key, COUNT(1) AS KeyTargetedCount FROM Targeted_Key_Value_Pairs GROUP BY Key ) SELECT CASE WHEN Key_Usage.Key IS NULL THEN Key_Targeted_Usage.Key ELSE Key_Usage.Key END AS Key, KeyUsageCount, KeyTargetedCount FROM Key_Usage FULL JOIN Key_Targeted_Usage ON Key_Usage.Key = Key_Targeted_Usage.Key ORDER BY Key
Resultados
Linha | Chave |
KeyUsageCount |
KeyTargetedCount |
1 | key_abc | 10000000 | 1000000 |
2 | key_def | 25000000 | 5000000 |
3 | key_ghi | 40000 | 2000 |
4 | key_jkl | 300000 | 12000 |
5 | key_mno | 100 000 | 1000 |
Lances por parceiros de lances
Encontre a frequência com que os parceiros efetuam lances ao extrair os lances de CustomTargeting
. O exemplo abaixo espera que o nome de cada parceiro comece “bidder_prefix_
” como em “bidder_prefix_partnername
”, e espera que um lance para esse parceiro esteja no formato “bidder_prefix_partnername=1.23
”.
Código
SELECT Bidder, COUNT(1) AS BidCount FROM ( SELECT Bidder FROM NetworkImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, '(bidder_prefix_[A-z]+)=[0-9]+\\.[0-9]*')) AS Bidder WHERE CustomTargeting LIKE '%bidder_prefix_%' AND Time >= '2020-01-01' AND Time < '2020-01-02' UNION ALL SELECT Bidder FROM NetworkBackfillImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, '(bidder_prefix_[A-z]+)=[0-9]+\\.[0-9]*')) AS Bidder WHERE CustomTargeting LIKE '%bidder_prefix_%' AND Time >= '2020-01-01' AND Time < '2020-01-02' ) GROUP BY Bidder ORDER BY BidCount
Resultados
Linha | Licitador |
BidCount |
1 | bidder_prefix_partner_1 | 15000000 |
2 | bidder_prefix_partner_2 | 12000000 |
3 | bidder_prefix_partner_3 | 9000000 |
4 | bidder_prefix_partner_4 | 6000000 |
5 | bidder_prefix_partner_5 | 3000000 |
Valores e contagens de lances para um único parceiro de lances
Para um único parceiro de lances, encontre os valores de lances mais comuns e a frequência com que cada lance foi feito. No exemplo abaixo, selecione os 10 lances mais comuns nas tabelas de impressões do parceiro "bidder_partner
" (impressões onde CustomTargeting
contém a chave “bidder_partner
”, que está definida para um preço de lance, como “1.23
”).
Código
SELECT BidPrice, SUM(BidCount) AS BidCount FROM ( SELECT SAFE_CAST(REGEXP_EXTRACT(CustomTargeting, 'bidder_partner=([0-9]+\\.[0-9]*)') AS FLOAT64) AS BidPrice, COUNT(1) AS BidCount FROM NetworkImpressions WHERE CustomTargeting LIKE '%bidder_partner=%' AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY BidPrice UNION ALL SELECT SAFE_CAST(REGEXP_EXTRACT(CustomTargeting, 'bidder_partner=([0-9]+\\.[0-9]*)') AS FLOAT64) AS BidPrice, COUNT(1) AS BidCount FROM NetworkBackfillImpressions WHERE CustomTargeting LIKE '%bidder_partner=%' AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY BidPrice ) GROUP BY BidPrice ORDER BY BidCount DESC LIMIT 10
Resultados
Linha | BidPrice |
BidCount |
1 | 0,01 | 600000 |
2 | 0,02 | 500000 |
3 | 0,05 | 400000 |
4 | 0,07 | 300000 |
5 | 0,09 | 200000 |
6 | 0,03 | 150000 |
7 | 0,08 | 100 000 |
8 | 0,04 | 75000 |
9 | 0,10 | 50000 |
10 | 0,06 | 25000 |
Contagens de lances e lances médios
Encontre o número total de lances e o lance médio nas tabelas de impressões para todos os parceiros de lances. O exemplo abaixo espera que o nome de cada parceiro comece “bidder_prefix_
” como em “bidder_prefix_partnername
”, e espera que um lance para esse parceiro esteja no formato “bidder_prefix_partnername=1.23
”.
Código
WITH Bid_Data AS ( SELECT REGEXP_EXTRACT(Bid, '(bidder_prefix_[A-z]+)=[0-9]+\\.[0-9]*') AS Bidder, SAFE_CAST(REGEXP_EXTRACT(Bid, 'bidder_prefix_[A-z]+=([0-9]+\\.[0-9]*)') AS FLOAT64) AS BidPrice, COUNT(1) AS BidCount FROM ( SELECT Bid FROM NetworkImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, 'bidder_prefix_[A-z]+=[0-9]+\\.[0-9]*')) AS Bid WHERE CustomTargeting LIKE '%bidder_prefix_%' AND Time >= '2020-01-01' AND Time < '2020-01-02' UNION ALL SELECT Bid FROM NetworkBackfillImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, 'bidder_prefix_[A-z]+=[0-9]+\\.[0-9]*')) AS Bid WHERE CustomTargeting LIKE '%bidder_prefix_%' AND Time >= '2020-01-01' AND Time < '2020-01-02' ) GROUP BY Bidder, BidPrice ), BidPrice_Totals AS ( SELECT Bidder, SUM(BidValue) AS TotalBidValue FROM ( SELECT Bidder, BidPrice * BidCount AS BidValue FROM Bid_Data ) GROUP BY Bidder ), BidCount_Totals AS ( SELECT Bidder, SUM(BidCount) AS TotalBidCount FROM Bid_Data GROUP BY Bidder ) SELECT BidCount_Totals.Bidder, TotalBidCount, ROUND((TotalBidValue / TotalBidCount), 2) AS AverageBid FROM BidCount_Totals INNER JOIN BidPrice_Totals ON BidCount_Totals.Bidder = BidPrice_Totals.Bidder ORDER BY Bidder
Resultados
Linha | Licitador |
BidCount |
AverageBid |
1 | bidder_prefix_partner_1 | 15000000 | 0,21 |
2 | bidder_prefix_partner_2 | 12000000 | 1,43 |
3 | bidder_prefix_partner_3 | 9000000 | 2,67 |
4 | bidder_prefix_partner_4 | 6000000 | 6,80 |
5 | bidder_prefix_partner_5 | 3000000 | 0,92 |
Contagens de segmentos da DMP
As plataformas de gestão de dados transmitem frequentemente os segmentos aos quais um utilizador pertence como pares de chaves-valores. Encontre a frequência com que estes segmentos aparecem em pedidos de anúncios, ou seja, quantas impressões eram elegíveis para segmentação para cada segmento. Extraia os IDs de segmentos a partir da CustomTargeting. O exemplo abaixo espera que o nome da chave seja "seg" e os valores sejam compostos por letras e números.
Código
SELECT Segment, COUNT(1) AS Count FROM ( SELECT Segment FROM NetworkImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, 'seg=([A-z0-9]+)')) AS Segment WHERE CustomTargeting LIKE '%seg=%' AND Time >= '2020-01-01' AND Time < '2020-01-02' UNION ALL SELECT Segment FROM NetworkBackfillImpressions CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CustomTargeting, 'seg=([A-z0-9]+)')) AS Segment WHERE CustomTargeting LIKE '%seg=%' AND Time >= '2020-01-01' AND Time < '2020-01-02' ) GROUP BY Segment ORDER BY Count DESC
Resultados
Linha | Segmento |
Contagem |
1 | abcd1234 | 10000000 |
2 | efgh5678 | 9000000 |
3 | ijkl9012 | 8000000 |
4 | mnop3456 | 7000000 |
5 | qrst7890 | 6000000 |
6 | uvwx1234 | 5000000 |
7 | yzab5678 | 4000000 |
8 | cdef9012 | 3000000 |
9 | ghij3456 | 2000000 |
10 | klmn7890 | 1000000 |
Vídeo
Erros de vídeo po URL, ID do bloco de anúncios e posição
Para resolver problemas de elementos publicitários de vídeo com erros significativos, pode ter de encontrar a página e/ou o espaço de anúncio na página que é a principal responsável pelos erros. Utilize NetworkVideoConversions
para encontrar erros por elemento publicitário (em que ActionName
contém "error
"). Se tiver mais do que um leitor de vídeo numa página, os leitores utilizam o mesmo bloco de anúncios e utiliza uma chave como "pos
" para distinguir entre blocos de anúncios numa página. Extraia esse pos
de CustomTargeting
. O exemplo abaixo espera que o nome dessa chave seja "pos
" e mostre as cinco principais combinações de RefererURL
, AdUnitID
e Position
responsável pelos erros num único elemento publicitário de vídeo.
Código
SELECT RefererURL, AdUnitID, REGEXP_EXTRACT(CustomTargeting, 'pos=([^;]+)') AS Position, COUNT(1) AS ErrorCount FROM NetworkVideoConversions WHERE LineItemID = 123456789 AND ActionName LIKE '%error%' AND Time >= '2020-01-01' AND Time < '2020-01-02' GROUP BY RefererURL, AdUnitID, Position ORDER BY ErrorCount DESC LIMIT 5
Resultados
Linha | RefererURL |
AdUnitID |
Posição |
ErrorCount |
1 | https://example.com/ | 11111111 | cima | 2000 |
2 | https://example.com/url/a | 22222222 | cima | 1500 |
3 | https://example.com/url/b | 22222222 | cima | 1400 |
4 | https://example.com/url/c | 11111111 | cima | 1000 |
5 | https://example.com/url/c | 11111111 | baixo | 500 |