Geçici tablolar ve kalıcı tablolar, sorguları kolaylaştırmanıza yardımcı olarak sorguların daha kolay anlaşılmasını ve korunmasını sağlar. Yeniden kullanabileceğiniz ara sonuçlar oluşturarak geçici verileri toplanmamış hâlde tutabilirsiniz. Aynı zamanda, sorguları yürütmek için gereken kaynakları azaltarak performansı artırabilirsiniz.
Oluşturulan tablolar, Ads Data Hub genelinde uygulanan statik gizlilik kontrollerine, izin verilen işlevlere ve alan birleştirme sınırlamalarına tabidir. Standart gizlilik kontrolleri, nihai SELECT ifadesinden elde edilen veriler BigQuery'ye aktarıldığında uygulanır.
Tablo oluşturmak için şu BigQuery söz dizimini uygulayın:
CREATE [OR REPLACE] [TEMP | TEMPORARY] TABLE TABLE_NAME
[OPTIONS(privacy_checked_export=<true | false>)] AS query_statement;
Şu ifadeler desteklenmez:
IF NOT EXISTSPARTITION BYCLUSTER BY
Geçici tablolar
Geçici tablolar sorgu okunabilirliğini artırır ve toplanmamış veriler içerebilecek ara sonuçlar oluşturmanıza olanak tanır.
Geçici tablolar:
- Yalnızca oturum düzeyinde mevcuttur ve sorgu yürütüldükten sonra bu tabloların süresi dolar.
- Yalnızca, oluşturulduğu sorgunun içinde kullanılabilir.
- Henüz gizlilik kontrolleri uygulanmamış birleştirilmemiş verileri saklayabilir.
- Gerekli ad alanı olmadan ada göre referans veriliyor
Geçici tablo oluşturmak için CREATE TEMP TABLE ifadesini kullanın. Şu örnek, sorgunun sonuçlarını kaydedecek bir geçici tablo oluşturur ve daha sonra bu geçici tabloyu alt sorgularda kullanır:
-- Get a list of creative IDs and store in a temporary table called creative_list:
CREATE TEMP TABLE creative_list AS (
SELECT
adgroup_id,
advertiser_id,
creative_id
FROM
adh.dv360_youtube_impressions
);
-- Return creatives with a count of impressions greater than 100
SELECT
creative_id,
COUNT(*) AS imps
FROM
creative_list
WHERE
imps > 100
GROUP BY
creative_id;
Kalıcı tablolar
Başka sorgularda kullanmak üzere ara tablo oluşturmak istiyorsanız kalıcı tablo oluşturun. Söz dizimi, TEMP ifadesi dışında, geçici tablolarla aynıdır. Bu tablolar 72 saat boyunca geçerlidir. Seçili ada sahip bir tablo zaten varsa bu tablonun üzerine yazılır.
Kalıcı tablolar birleştirilmemiş verileri saklayabilir ancak tablonun içeriği, gizlilik kontrolü yapılmış sorgu sonuçları dışında görünmez.
Kalıcı tablolar:
- 72 saat sonra sona erer.
- Oluşturulduğu sorgunun dışında kullanılabilir.
- Henüz gizlilik kontrolleri uygulanmamış birleştirilmemiş verileri saklayabilir.
tmpad alanı üzerinden referans verilir ancak aynı sorguda ada göre de referans verilebilir.
Kalıcı tablo oluşturmak için CREATE TABLE ifadesini kullanın. Şu örnek, sorgunun sonuçlarını kaydedecek bir kalıcı tablo oluşturur ve daha sonra bu kalıcı tabloyu sonraki sorgularda kullanır.
Sorgu 1
-- Get a list of creative IDs and store in a persistent table called creative_list:
CREATE TABLE creative_list AS (
SELECT
adgroup_id,
advertiser_id,
creative_id
FROM
adh.dv360_youtube_impressions
);
-- Return the total count of impressions in the table
SELECT
COUNT(*) AS imps
FROM
tmp.creative_list -- Alternative: creative_list
Sorgu 2
-- Return creatives which had more than 100 impressions
SELECT
creative_id,
COUNT(*) AS imps
FROM
tmp.creative_list
WHERE
imps > 100
GROUP BY
creative_id;
Gizlilik kontrollerini uygulama
Ads Data Hub, gizlilik kontrollerine tabi kalıcı sonuç tabloları oluşturmak için SQL söz dizimini de destekler.
Gizlilik kontrollerine tabi bir tablo oluşturmak için sorgunuza OPTIONS ifadesini ekleyin.
OPTIONS(privacy_checked_export=true)
Şu örnek, oturum düzeyinde bir geçici tablo oluşturur ve gizlilik kontrollerini uygular:
-- Get a list of creative IDs and store in a temporary table called creative_list:
CREATE TEMP TABLE creative_list OPTIONS(privacy_checked_export=true) AS (
SELECT
adgroup_id,
advertiser_id,
creative_id
FROM
adh.dv360_youtube_impressions
);
Şu örnek, kalıcı tablo oluşturur, gizlilik kontrollerini uygular ve tabloyu Google Cloud projenize aktarır:
-- Get a list of creative IDs and store in a persistent table called creative_list:
CREATE TABLE project_name.dataset_name.creative_list` OPTIONS(privacy_checked_export=true) AS (
SELECT
adgroup_id,
advertiser_id,
creative_id
FROM
adh.dv360_youtube_impressions
);
Aynı sorguyu kullanarak birden çok tabloyu dışa aktarma
Sorgu başına bir tablo yeterli olmadığında, Ads Data Hub görüntülenebilir sonuç tablolarını dışa aktarmak için esnek bir SQL söz dizimini destekler. Bu tablolar, Ads Data Hub'da uygulanan aynı gizlilik kontrollerine tabidir.
Bir tabloyu ana SQL ifadesiyle birlikte dışa aktarmak için kullanılacak söz dizimi şöyledir:
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
OPTIONS(privacy_checked_export=true) AS query_statement;
Örneğin, bir tabloyu adh.google_ads_impressions tablosundaki her kampanya kimliği için satır sayısını içeren BigQuery PROJECT_NAME.DATASET.TABLE_NAME hedefine aktarmak için:
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
OPTIONS(privacy_checked_export=true) AS
SELECT campaign_id, COUNT(*) AS ct
FROM adh.google_ads_impressions
GROUP BY campaign_id;
Aşağıdaki örnekte bu fikir genişletilmekte ve iki tabloyu BigQuery'ye aktarmak için aynı sorgu kullanılmaktadır:
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
OPTIONS(privacy_checked_export=true) AS
SELECT campaign_id, COUNT(*) AS ct
FROM adh.google_ads_impressions
GROUP BY campaign_id;
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME_2
OPTIONS(privacy_checked_export=true) AS
SELECT advertiser_id, COUNT(*) AS ct
FROM adh.google_ads_impressions
GROUP BY advertiser_id;
Tablolara, oluşturuldukları sorguda da referans verilebilir. Örneğin, aşağıdaki sorgu iki tablo çıktısı verir:
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
OPTIONS(privacy_checked_export=true) AS
SELECT campaign_id, COUNT(*) AS ct
FROM adh.google_ads_impressions
GROUP BY campaign_id;
SELECT ct FROM PROJECT_NAME.DATASET.TABLE_NAME;
- İlk tablo,
campaign_idvectsütunlarıylaPROJECT_NAME.DATASET.TABLE_NAMEkonumunda oluşturulur. - İkinci tablo, iş bağımsız değişkenlerinin Hedef tablo alanında belirtilen konumda
ctsütunuyla oluşturulur.
Filtrelenmiş satır özeti ekleme
Bu tablolara, filtrelenmiş satır özeti de eklenebilir. Filtrelenmiş satır özetleri hakkında bilgi edinin.
Çalışma zamanında birden fazla tabloyu adlandırma
Bir sorguda birden fazla tablo oluştururken bunları adlandırmanın iki yolu vardır:
- SQL'de tabloları şu biçimde açıkça adlandırın:
PROJECT_NAME.DATASET.TABLE_NAME. - SQL'de parametreleri yer tutucu olarak kullanın ve tabloları çalışma zamanında adlandırın.
BigQuery tabloları oluşturma ve güncelleme
Ads Data Hub, komut dosyalarında belirli BigQuery ifadelerinin doğrudan kullanılmasını destekler. Bu sayede, her iş için yeni bir sonuç tablosu oluşturmak yerine mevcut bir sonuç tablosuna satır eklemek mümkün olur. Bu ifadeler, BigQuery projenizdeki doğrudan bir tablo yoluna referans vermelidir ve Ads Data Hub tablolarına veya seçeneklerine (ör. privacy_checked_export) doğrudan erişemez.
Desteklenen ifadeler:
Örnek sorgu:
-- Compute new data for the current job. This table can be used with MERGE.
CREATE TEMP TABLE new_data OPTIONS(privacy_checked_export=TRUE) AS
SELECT
DATE(event_time, @time_zone) AS event_date,
<more grouping keys>,
COUNT(*) AS impressions,
<more metrics>
FROM ...
GROUP BY ALL;
-- Initialize a result table on the first run of the query, which may include
-- date partitioning and/or clustering for efficiency.
CREATE TABLE IF NOT EXISTS PROJECT_NAME.DATASET.TABLE_NAME (<columns>)
PARTITION BY event_date CLUSTER BY ...
OPTIONS(partition_expiration_days=365);
-- Atomically insert new results or update existing ones.
MERGE PROJECT_NAME.DATASET.TABLE_NAME a
USING new_data b ON a.data_date = b.data_date AND <more grouping keys>
WHEN MATCHED THEN
UPDATE SET a.impressions = b.impressions, <more metrics>
WHEN NOT MATCHED THEN
INSERT (<all columns>) VALUES(<all columns>);
MERGE ifadelerinin tablo şemasının değiştirilmesini desteklemediğini unutmayın. Mevcut bir rapor tablosuna sütun eklemeniz veya sütunları değiştirmeniz gerekiyorsa Ads Data Hub'da bir iş çalıştırmadan önce BigQuery'deki tablo şemasını güncelleyebilir ya da güncellenmiş şema ve seçeneklerle tabloyu kopyalamak için bir Ads Data Hub işi çalıştırabilirsiniz. Örneğin:
CREATE OR REPLACE TABLE PROJECT_NAME.DATASET.TABLE_NAME
PARTITION BY event_date CLUSTER BY ... OPTIONS(...) AS
SELECT
<new columns>
FROM PROJECT_NAME.DATASET.TABLE_NAME;