Este artigo contém exemplos de como criar consultas para os relatórios de Transferência de dados do Ad Manager. Saiba mais sobre os arquivos da Transferência de dados, incluindo como eles podem ser recebidos.
O título deste artigo era "Manual de Transferência de dados".
Impressões não preenchidas
Impressões não preenchidas em NetworkImpressions
Para saber o número de impressões não preenchidas em um dia, consulte em NetworkImpressions
as entradas onde LineItemID
é 0
. Não há 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 | 20.000.000 |
Impressões não preenchidas em NetworkRequests
Também é possível encontrar o número de impressões não preenchidas ao consultar NetworkRequests
. Procure solicitações em que IsFilledRequest
seja falso. Não há 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 | 20.000.000 |
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 solicitado, mas não por URL. Inclua RefererURL
para encontrar as dez páginas que mais 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/ | 4.903.691 |
2 | http://example.com/url/a | 748.271 |
3 | http://example.com/url/b | 383.293 |
4 | http://example.com/url/c | 364.355 |
5 | http://example.com/url/d | 326.495 |
6 | http://example.net/ | 295.346 |
7 | http://example.net/url/a | 291.043 |
8 | http://example.net/url/b | 276.106 |
9 | http://example.net/url/c | 231.169 |
10 | http://example.net/url/d | 194.988 |
Impressões não preenchidas por bloco de anúncios
Encontre os blocos de anúncios responsáveis pela maior parte das impressões não preenchidas em uma única página. Se você usa o conector do BigQuery, utilize a tabela de correspondências de blocos de anúncios para encontrar o nome deles. Como a tabela de correspondências tem dados dos blocos de anúncios para todos os dias, limite essas informações a somente um deles.
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 | 95.730.695 | Nome do último nível A | 1.123.439 |
2 | 95.033.015 | Nome do último nível B | 1.116.622 |
3 | 95.033.615 | Nome do último nível C | 1.102.641 |
4 | 95.049.575 | Nome do último nível D | 772.235 |
5 | 95.734.535 | Nome do último nível E | 744.777 |
6 | 95.584.895 | Nome do último nível F | 27.593 |
7 | 95.045.255 | Nome do último nível G | 7.482 |
8 | 95.343.215 | Nome do último nível H | 1.925 |
9 | 94.977.215 | Nome do último nível I | 19 |
10 | 95.033.375 | Nome do último nível J | 12 |
Impressões
Impressões por Product
e DealType
Use os campos Product
e DealType
na Transferência de dados para gerar relatórios semelhantes aos do Ad Manager que usam as dimensões "Canal de demanda", "Canal programático" e "Tipo de otimização". Selecione impressões de NetworkImpressions
(em que LineItemID
é diferente de 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 | Product |
DealType |
Contagem |
1 | Ad Exchange | nulo | 60.000.000 |
2 | Ad Exchange | Leilão privado | 2.000.000 |
3 | Servidor de anúncios | nulo | 40.000.000 |
4 | Servidor de anúncios | Transação preferencial | 1000000 |
5 | Servidor de anúncios | Programática garantida | 1.200.000 |
6 | Lances de troca | nulo | 15.000.000 |
7 | Lances de troca | Transação preferencial | 20.000 |
8 | Lances de troca | Leilão privado | 500.000 |
9 | Acesso preferencial | nulo | 100.000 |
Parâmetros do relatório
Gere um relatório do Ad Manager usando a mesma data. Escolha as seguintes dimensões e métricas:
- Dimensões:
- Canal de demanda
- Canal programático
- Tipo de otimização
- Métricas:
- Total de impressões
- Total de impressões
Resultados
Linha | Canal de demanda | Canal programático | Tipo de otimização | Total de impressões |
1 | Open Bidding | Leilão aberto | Todos os outros tipos de tráfego | 9.000.000 |
2 | Open Bidding | Leilão aberto | Concorrência otimizada | 7.000 |
3 | Open Bidding | Leilão aberto | CPM desejado | 5.993.000 |
4 | Open Bidding | Transações preferenciais | Todos os outros tipos de tráfego | 20.000 |
5 | Open Bidding | Leilão privado | Todos os outros tipos de tráfego | 496.000 |
6 | Open Bidding | Leilão privado | Concorrência otimizada | 4.000 |
7 | Servidor de anúncios | (Não relevante) | Todos os outros tipos de tráfego | 40.000.000 |
8 | Servidor de anúncios | Transações preferenciais | Todos os outros tipos de tráfego | 1.000.000 |
9 | Servidor de anúncios | Programática garantida | Todos os outros tipos de tráfego | 1.200.000 |
10 | Ad Exchange | Leilão aberto | Todos os outros tipos de tráfego | 48.000.000 |
11 | Ad Exchange | Leilão aberto | Acesso preferencial | 100.000 |
12 | Ad Exchange | Leilão aberto | Concorrência otimizada | 10.000 |
13 | Ad Exchange | Leilão aberto | CPM desejado | 11.990.000 |
14 | Ad Exchange | Leilão privado | Todos os outros tipos de tráfego | 1.995.000 |
15 | Ad Exchange | Leilão privado | Concorrência otimizada | 5.000 |
Direto
- Transferência de dados:
Product
=Ad Server
DealType
énull
- Linha 3: 40.000.000
- Relatórios do Ad Manager:
- Canal de demanda = "Servidor de anúncios"
- Canal programático = "(Não relevante)"
- Tipo de otimização = "Todos os outros tipos de tráfego"
- Linha 7: 40.000.000
Transações preferenciais
- Transferência de dados:
Product
=Ad Server
DealType
éPreferred Deal
- Linha 4: 1.000.000
- Relatórios do Ad Manager:
- Canal de demanda = "Servidor de anúncios"
- Canal programático = "Transações preferenciais"
- Tipo de otimização = "Todos os outros tipos de 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 demanda = "Open Bidding"
- Canal programático = "Transações preferenciais"
- Tipo de otimização = "Todos os outros tipos de tráfego"
- Linha 4: 20.000
Programática garantida
- Transferência de dados:
Product
=Ad Server
DealType
éProgrammatic Guaranteed
- Linha 5: 1.200.000
- Relatórios do Ad Manager:
- Canal de demanda = "Servidor de anúncios"
- Canal programático = "Programática garantida"
- Tipo de otimização = "Todos os outros tipos de tráfego"
- Linha 9: 1.200.000
Leilão aberto do Ad Exchange (exceto o Acesso preferencial)
- Transferência de dados:
Product
=Ad Exchange
DealType
énull
- Linha 1: 60.000.000
- Relatórios do Ad Manager:
- Canal de demanda = "Ad Exchange"
- Canal programático = "Leilão aberto"
- Tipo de otimização = "Todos os outros tráfegos", "CPM desejado", "Concorrência otimizada"
- Total das linhas 10, 12 e 13: 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 demanda = "Ad Exchange"
- Canal programático = "Leilão privado"
- Tipo de otimização = "Todos os outros tipos de tráfego", "Concorrência otimizada"
- Total das linhas 14 e 15: 1.995.000 + 5.000 = 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 demanda = "Open Bidding"
- Canal programático = "Leilão aberto"
- Tipo de otimização = "Todos os outros tráfegos", "CPM desejado", "Concorrência otimizada"
- Total das linhas 1, 2 e 3: 9.000.000 + 7.000 + 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 demanda = "Open Bidding"
- Canal programático = "Leilão privado"
- Tipo de otimização = "Todos os outros tipos de tráfego", "Concorrência otimizada"
- Total das linhas 5 e 6: 496.000 + 4.000 = 500.000
Acesso preferencial
- Transferência de dados:
Product
=First Look
DealType
énull
- Linha 9: 100.000
- Relatórios do Ad Manager:
- Canal de demanda = "Ad Exchange"
- Canal programático = "Leilão aberto"
- Tipo de otimização = "Acesso preferencial"
- Linha 11: 100.000
Receita
Receita para um item de linha de CPM
O arquivo NetworkImpressions
não contém dados de receita. No entanto, se você usa o conector do BigQuery, poderá utilizar a tabela de correspondências de itens de linha para encontrar a taxa de CPM. Caso contrário, use a API Ad Manager para encontrar essa taxa. Encontre a receita para um determinado item de linha de CPM em um período específico ao contar as impressões, multiplicar pela taxa e dividir por mil. Como a tabela de correspondências tem dados dos blocos de anúncios para todos os dias, limite essas informações a somente um deles.
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 |
Impressions |
Rate |
CostType |
Revenue |
1 | 123456789 | 21.324 | 3,5 | CPM | 74,634 |
Receita para um item de linha de CPD
Assim como nos itens de linha de CPM, é possível usar a tabela de correspondências de itens de linha ou a API Ad Manager para encontrar a taxa de CPD de um item de linha. Como a tabela de correspondências tem dados dos blocos de anúncios para todos os dias, limite essas informações a somente um deles. Encontre a receita para um determinado item de linha de CPD ao contar o número de dias em que as impressões foram veiculadas e multiplicar pela taxa. Você pode incluir o número de impressões veiculadas 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 |
Days |
CostType |
Rate |
Revenue |
Impressions |
Average_eCPM |
1 | 123456789 | 5 | CPD | 4.000 | 20.000 | 7.000.000 | 2,86 |
Receita para um item de linha de CPC
Assim como nos itens de linha de CPM, é possível usar a tabela de correspondências de itens de linha ou a API Ad Manager para encontrar a taxa de CPC de um item de linha. Como a tabela de correspondências tem dados dos blocos de anúncios para todos os dias, limite essas informações a somente um deles. Encontre a receita para um determinado item de linha de CPC em um período específico ao contar os cliques e multiplicar pela taxa. Você pode incluir o número de impressões veiculadas 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 |
Impressions |
cliques |
CTR |
Rate |
Revenue |
Average_eCPM |
1 | 123456789 | CPC | 140.000 | 23 | 0,02 | 15,5 | 356,5 | 2,55 |
Receita para um item de linha de vCPM
Assim como nos itens de linha de CPM, é possível usar a tabela de correspondências de itens de linha ou a API Ad Manager para encontrar a taxa de vCPM de um item de linha. Como a tabela de correspondências tem dados dos blocos de anúncios para todos os dias, limite essas informações a somente um deles. Encontre a receita para um determinado item de linha de vCPM ao contar as impressões visíveis de NetworkActiveViews
e multiplicar pela taxa. Você pode incluir o número de impressões veiculadas 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 |
Impressions |
ViewableImpressions |
Rate |
Revenue |
Average_eCPM |
1 | 123456789 | CPMAV | 500.000 | 150.000 | 10 | 1.500 | 3 |
Receita para um anunciante
Para encontrar a receita de um determinado anunciante em um período específico, conte as impressões de cada item de linha e multiplique pela taxa. Use a tabela de correspondências de itens de linha para encontrar a taxa e a 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 |
Impressions |
Rate |
CostType |
Revenue |
1 | 111222333 | ABC | 111111111 | 20.212 | 5 | CPM | 101,06 |
2 | 111222333 | ABC | 222222222 | 58.321 | 3 | CPM | 174,963 |
3 | 111222333 | ABC | 333333333 | 82.772 | 8,5 | CPM | 703,562 |
4 | 111222333 | ABC | 444444444 | 19.003 | 3,25 | CPM | 61,7597 |
Fornecimentos de códigos
Para redes com substituto ativado, a Transferência de dados conta um fornecimento de código para cada item de linha selecionado na cadeia de substitutos. Já os relatórios do Ad Manager contam um fornecimento de código somente para o primeiro item de linha selecionado na cadeia de substitutos. A Transferência de dados também conta um fornecimento de código para anúncios complementares, e os relatórios do Ad Manager não. Se você quiser alinhar o relatório da Transferência de dados ao do Ad Manager, conte os fornecimentos de códigos somente quando VideoFallbackPosition = 0
e IsCompanion
for false
. Os fornecimentos de códigos de mediação na Transferência de dados talvez não sejam iguais nos relatórios do Ad Manager. Dependendo da implementação, pode haver outras diferenças entre a contagem de fornecimentos de códigos na Transferência de dados e nos relatórios do Ad Manager.
Fornecimentos de códigos, impressões e taxa de renderização por item de linha para um único anunciante
Saiba com que frequência os fornecimentos de código se transformam em impressões para cada item de linha de um anunciante direto. Como estamos analisando um anunciante direto, esses fornecimentos de código vão estar somente em NetworkCodeServes
, e as impressões somente 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 |
Impressions |
RenderRate |
1 | 1111111111 | 6000 | 2.600 | 43,33 |
2 | 2222222222 | 1000000 | 371.200 | 37,12 |
3 | 3333333333 | 50.000 | 17.550 | 35,1 |
4 | 4444444444 | 800.000 | 275.000 | 34,38 |
5 | 5555555555 | 1.500.000 | 400.000 | 26,66 |
Fornecimentos de códigos, impressões e taxa de renderização por categoria de dispositivo e tamanho do criativo exibido
Inclua a categoria do dispositivo e o tamanho do criativo exibido para saber como as taxas de renderização variam para um pedido de um único 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 |
Impressions |
RenderRate |
1 | 6666666666 | Smart TV | Vídeo/sobreposição | 100 | 40 | 40 |
2 | 6666666666 | Computador | Vídeo/sobreposição | 20.000 | 9000 | 45 |
3 | 6666666666 | Smartphone | Vídeo/sobreposição | 32.000 | 25.000 | 78,13 |
4 | 6666666666 | Tablet | Vídeo/sobreposição | 1000 | 800 | 80 |
5 | 7777777777 | Smart TV | 300 x 250 | 200 | 190 | 95 |
6 | 7777777777 | Computador | 300 x 250 | 185.000 | 184.000 | 99,46 |
7 | 7777777777 | Smartphone | 300 x 250 | 225.000 | 220.000 | 97,77 |
8 | 7777777777 | Tablet | 300 x 250 | 10.000 | 9.800 | 98 |
9 | 7777777777 | Smart TV | 300 x 50 | 50 | 50 | 100 |
10 | 7777777777 | Computador | 300 x 50 | 1000 | 900 | 90 |
11 | 7777777777 | Smartphone | 300 x 50 | 90.000 | 80.000 | 88,89 |
12 | 7777777777 | Tablet | 300 x 50 | 800 | 750 | 93,75 |
Visibilidade
Os dados de visibilidade podem ser encontrados nos arquivos "Impression" e "ActiveView" usando os campos ActiveViewEligibleCount
, ActiveViewMeasurableCount
e ActiveViewViewableCount
. Leia mais sobre esses campos e como os valores são definidos.
A visibilidade de um período pode ser calculada ao somar os valores encontrados nos arquivos ou mesclar os eventos individuais e depois somar os valores. Pode haver pequenas diferenças entre essas duas estratégias, que são detalhadas abaixo.
Impressões qualificadas, mensuráveis e visíveis (total)
Encontre o número de impressões qualificadas, mensuráveis e visíveis para um determinado dia. Como observado acima, os arquivos "Impression" e "ActiveView" precisam ser usados.
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 | 97.000.000 | 95.000.000 | 60.000.000 |
Impressões qualificadas, mensuráveis e visíveis (por mesclagem)
Encontre o número de impressões qualificadas, mensuráveis e visíveis em um determinado dia ao mesclar os eventos individuais nos arquivos "Impression" e "ActiveView" e depois somar os valores. Em alguns casos raros, recebemos um ping de impressão visível do Active View, mas não um de impressão. Ao mesclar os dados dos arquivos "Active View" e "Impression", talvez você note discrepâncias nas impressões mensuráveis e menos impressões visíveis em relação à primeira consulta, conforme mostrado 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 | 97.000.000 | 95.000.000 | 59.900.000 |
Chaves-valor
Uso das chaves
Saiba com que frequência cada uma das suas chaves está presente em uma solicitação de anúncio (aparece em CustomTargeting
) e com que frequência essa chave foi usada para veicular um item de linha (aparece em TargetedCustomCriteria
). As chaves ativas que não aparecem nos resultados ou que são usadas com pouca frequência podem ser boas opções para o arquivamento. Assim, você fica abaixo do 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 | Key |
KeyUsageCount |
KeyTargetedCount |
1 | key_abc | 10.000.000 | 1000000 |
2 | key_def | 25.000.000 | 5.000.000 |
3 | key_ghi | 40.000 | 2000 |
4 | key_jkl | 300.000 | 12000 |
5 | key_mno | 100.000 | 1000 |
Lances de parceiros
Encontre a frequência com que cada parceiro dá lances ao extrair os lances de CustomTargeting
. No exemplo abaixo, o nome de cada parceiro deve começar com "bidder_prefix_
", como "bidder_prefix_partnername
", e o lance desse parceiro deve estar 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 | Bidder |
BidCount |
1 | bidder_prefix_partner_1 | 15.000.000 |
2 | bidder_prefix_partner_2 | 12.000.000 |
3 | bidder_prefix_partner_3 | 9.000.000 |
4 | bidder_prefix_partner_4 | 6.000.000 |
5 | bidder_prefix_partner_5 | 3.000.000 |
Valores e contagem de lances para um único parceiro
Para um único parceiro, 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 chamado "bidder_partner
" (impressões em que CustomTargeting
contém a chave "bidder_partner
" configurada com 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 | 600.000 |
2 | 0,02 | 500.000 |
3 | 0,05 | 400.000 |
4 | 0,07 | 300.000 |
5 | 0,09 | 200.000 |
6 | 0,03 | 150.000 |
7 | 0,08 | 100.000 |
8 | 0,04 | 75.000 |
9 | 0,10 | 50.000 |
10 | 0,06 | 25.000 |
Contagem e média de lances
Encontre o número total e a média de lances nas tabelas de impressões para todos os parceiros. No exemplo abaixo, o nome de cada parceiro deve começar com "bidder_prefix_
", como "bidder_prefix_partnername
", e o lance desse parceiro deve estar 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 | Bidder |
BidCount |
AverageBid |
1 | bidder_prefix_partner_1 | 15.000.000 | 0,21 |
2 | bidder_prefix_partner_2 | 12.000.000 | 1,43 |
3 | bidder_prefix_partner_3 | 9.000.000 | 2,67 |
4 | bidder_prefix_partner_4 | 6.000.000 | 6,80 |
5 | bidder_prefix_partner_5 | 3.000.000 | 0,92 |
Contagem de segmentos de DMP
As plataformas de gerenciamento de dados geralmente transmitem os segmentos a que um usuário pertence como pares de chave-valor. Saiba com que frequência esses segmentos aparecem nas solicitações de anúncios — quantas impressões estavam qualificadas para a segmentação de cada segmento. Extraia os IDs de segmento de "CustomTargeting". No exemplo abaixo, o nome da chave deve ser "seg", e os valores precisam ser 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 | Segment |
Count |
1 | abcd1234 | 10.000.000 |
2 | efgh5678 | 9.000.000 |
3 | ijkl9012 | 8.000.000 |
4 | mnop3456 | 7.000.000 |
5 | qrst7890 | 6.000.000 |
6 | uvwx1234 | 5.000.000 |
7 | yzab5678 | 4.000.000 |
8 | cdef9012 | 3.000.000 |
9 | ghij3456 | 2.000.000 |
10 | klmn7890 | 1000000 |
Vídeo
Erros de vídeo por URL, ID de bloco de anúncios e posição
Para resolver erros significativos nos itens de linha de vídeo, talvez seja necessário encontrar a página e/ou o espaço do anúncio na página que é a principal responsável pelos erros. Use NetworkVideoConversions
para encontrar os erros por item de linha (em que ActionName
contém "error
"). Se você tiver mais de um player de vídeo em uma página, os players usarem o mesmo bloco de anúncios e você utilizar uma chave como "pos
" para diferenciar os blocos de anúncios em uma página, extraia esse valor pos
de CustomTargeting
. No exemplo abaixo, o nome dessa chave deve ser "pos
". São mostradas as cinco principais combinações de RefererURL
, AdUnitID
e Position
responsáveis pelos erros de um único item de linha 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 |
Position |
ErrorCount |
1 | https://example.com/ | 11111111 | superior | 2000 |
2 | https://example.com/url/a | 22222222 | superior | 1.500 |
3 | https://example.com/url/b | 22222222 | superior | 1.400 |
4 | https://example.com/url/c | 11111111 | superior | 1000 |
5 | https://example.com/url/c | 11111111 | inferior | 500 |