Kullanıcı tarafından sağlanan verileri eşleştirme (KTSVE), bir kullanıcı hakkında topladığınız birinci taraf verilerini (ör. web siteleriniz, uygulamalarınız veya fiziksel mağazalarınızdan edinilen bilgiler), Google'ın sahip olduğu ve işlettiği veriler dahil olmak üzere tüm Google reklam verileriyle (Google'ın sahip olduğu ve işlettiği veriler dahil) birleştirir. Buna, Google Marketing Platform (GMP) ürünleri aracılığıyla satın alınan veriler (ör. Display & Video 360 kullanılarak satın alınan YouTube) dahildir. Google'ın mülkiyetinde ve işletiminde olmayan diğer GMP ürünleri desteklenmez.
Kullanıcı tarafından sağlanan verileri eşleştirmeye uygun olması için reklam etkinliğinin Google reklam verilerindeki oturum açmış bir kullanıcıya bağlanması gerekir.
Bu dokümanda, kullanıcı tarafından sağlanan veri eşleştirme özelliği açıklanmakta ve kurulum ile kullanım hakkında yol gösterici bilgiler verilmektedir.
Genel Bakış
Değerli reklamcılık analizleri elde etmek için genellikle birden fazla kaynaktan gelen verileri bir araya getirmek gerekir. Bu veri ardışık düzeni sorununa kendi çözümünüzü oluşturmak için önemli miktarda zaman ve mühendislik yatırımı yapmanız gerekir. Ads Data Hub'daki Bağlantılar sayfası, BigQuery'ye veri aktarma, dönüştürme ve eşleştirme için adım adım rehberli bir arayüz sunarak bu süreci kolaylaştırır. Böylece, Ads Data Hub sorgularınızda veya BigQuery'den veri okuyan diğer ürünlerde bu verileri kullanabilirsiniz. Sorgularınızın kapsamını birinci taraf verileriyle genişletmek daha zengin müşteri deneyimleri sağlayabilir ve sorguları sektör genelindeki reklam izleme değişikliklerine karşı daha dirençli kılar.
Bağlantılar sayfası, kimliği tanımlayabilecek bilgileri (PII) gizlilik odaklı bir şekilde şifrelemenize ve iş ortaklarıyla paylaşmanıza olanak tanıyan araçlarla tasarlanmıştır. Hangi sütunların kimliği tanımlayabilecek bilgiler içerdiğini seçtikten sonra Ads Data Hub, birinci taraf verilerinizin yalnızca bunu yapma izni olan kişiler tarafından dışa aktarılmasını veya okunmasını sağlayarak verileri şifreler. Ölçüm veya etkinleştirme kullanım alanınız için hangi birinci taraf verilerinin gerekli olduğunu bilmek zor olabilir. Bu nedenle Ads Data Hub, önceden tanımlanmış kullanım alanlarının kapsamlı bir listesini sağlar ve ardından verilerinizi ayıklama, dönüştürme ve yükleme deneyiminin tamamında size yol gösterir. Birden fazla bağlantı türü oluşturabilirsiniz ancak bu dokümanda, kullanıcı tarafından sağlanan verileri eşleştirme için Bağlantılar sayfasını kullandığınız varsayılmaktadır.
Desteklenen birinci taraf veri kaynakları
Aşağıdaki veri kaynaklarından veri aktarabilirsiniz:
- BigQuery
- Cloud Storage
- Güvenli FTP (sFTP)
- Snowflake
- MySQL
- PostgreSQL
- Amazon Redshift
- Amazon S3
Kullanıcı tarafından sağlanan verileri eşleştirme, yalnızca oturum açmış kullanıcılar için Google mülkiyetindeki ve Google tarafından işletilen envanterde kullanılabildiğinden, yakında üçüncü taraf çerezlerinin desteğinin sonlandırılacak olması bu durumdan etkilenmez. Üçüncü taraf verilerine kıyasla sektördeki değişikliklere karşı daha dirençli olduğundan daha zengin analizler sağlayabilir. Bu da müşteri etkileşimini artırabilir.
Terminolojiyi öğrenin
- Kullanıcı tarafından sağlanan veri bağlantısı: Verilerinizi içe aktarıp eşleştirmek, veri içe aktarma işlemlerini planlamak, verileri dönüştürmek ve reklam verilerinizi bir kullanıcı kimliği kullanarak eşleştirmek için kullanıcı tarafından sağlanan veri bağlantısı oluşturun. Reklam etkinliğinin Google reklam verilerinde oturum açmış bir kullanıcıya bağlanması gerekir. Birden fazla Google Cloud projesi gerektirir.
- Birinci taraf veri bağlantısı: Verileri içe aktarma işlemlerini planlamak ve KTSVE'nin gelişmiş özelliklerini kullanmadan verileri dönüştürmek için veri hazırlama aracı olarak birinci taraf veri bağlantısı oluşturun. Bu tür bir bağlantı için yalnızca bir Google Cloud projesi gerekir.
- Veri kaynağı: Bağlı bir ürün, içe aktarılan dosya veya üçüncü taraf entegrasyonu (ör. BigQuery).
- Hedef: Kullanım alanı genellikle, içe aktarılan verilerin etkinleştirildiği bir Google ürünü veya ürün özelliğidir (ör. Ads Data Hub kullanıcı tarafından sağlanan verileri eşleştirme).
- Yönetici projesi: Özel reklam verilerinizi ham biçiminde içeren Google Cloud projesi.
- Çıkış veri kümesi: Ads Data Hub'ın yazdığı BigQuery veri kümesi. Varsayılan olarak bu, yönetici projenizin altındaki bir veri kümesidir. Başka bir Google Cloud projesiyle ilişkilendirmek için Hizmet hesaplarını yapılandırma başlıklı makaleyi inceleyin.
Süreç özeti
- Veri beslemesi ve eşleştirme ayarlarını yapma
- Yönetici projenizdeki hizmet hesaplarına gerekli izinleri siz verirsiniz. Veri beslemeyi ayarlama başlıklı makaleyi inceleyin.
- Birinci taraf verilerini besleme ve eşleştirme
- Birinci taraf verilerinizi siz biçimlendirir ve BigQuery veri kümenize yüklersiniz. En basit kurulum için yönetici projenizi kullanın. Ancak sahip olduğunuz herhangi bir BigQuery veri kümesini kullanabilirsiniz.
- Siz, bağlantı oluşturarak ve içe aktarma planı ayarlayarak veri eşleştirme isteği başlatırsınız.
- Google, eşleşme tabloları oluşturmak ve güncellemek için projeniz ile Google'a ait verileri (Google'ın kullanıcı kimliğini ve kullanıcı tarafından sağlanan karma oluşturma işlemi uygulanmış verileri içeren) birleştirir.
- Birinci taraf verilerini besleme başlıklı makaleyi inceleyin.
- Eşleşen verilere dayalı olarak Ads Data Hub'da devam eden sorgular
- Eşleşme tablolarında sorguları, Ads Data Hub'da normal sorguları çalıştırdığınız şekilde çalıştırırsınız. Eşleşen verileri sorgulayın başlıklı makaleyi inceleyin.
Gizlilik koşulları hakkında bilgi
Müşteri verilerini toplama
Kullanıcı tarafından sağlanan verileri eşleştirme özelliğini kullanırken birinci taraf verileri yüklemeniz gerekir. Bu bilgiler web sitelerinizden, uygulamalarınızdan, fiziksel mağazalarınızdan veya müşterilerin doğrudan sizinle paylaştığı bilgiler olabilir.
Bu politika uyarınca:
- Gizlilik politikanızda, müşteri verilerini sizin adınıza hizmet verebilmeleri için üçüncü taraflarla paylaştığınızı belirtmeli ve yasal gereksinimlerin söz konusu olduğu durumlarda böylesi bir paylaşım için onay aldığınızdan emin olmalısınız.
- Müşteri verilerini yüklemek için yalnızca Google'ın onayladığı API'yi veya arayüzü kullanmalısınız.
- İlgili tüm özdenetim veya sektör kuralları da dahil olmak üzere geçerli tüm yasa ve yönetmeliklere uymalısınız.
Birinci taraf izni onayı
Ads Data Hub'da birinci taraf verilerinizi kullanabilmek için AEA'daki son kullanıcılardan alınan verileri, AB kullanıcı rızası politikası ve Ads Data Hub politikasına uygun şekilde Google ile paylaşmak için gereken izni aldığınızı doğrulamanız gerekir. Bu koşul tüm Ads Data Hub hesapları için geçerlidir ve yeni birinci taraf verileri yüklediğiniz her seferde güncellenmelidir. Bu onayı, hesabın tamamı adına herhangi bir kullanıcı verebilir.
Analiz sorguları için geçerli olan Google hizmeti sorgu kurallarının, UPDM sorguları için de geçerli olduğunu unutmayın. Örneğin eşleşme tablosu oluşturduğunuzda, AEA'daki kullanıcılarla ilgili hizmetler arası sorgular yürütemezsiniz.
Ads Data Hub'da izni nasıl onaylayacağınızı öğrenmek için Avrupa Ekonomik Alanı için kullanıcı rızası koşulları sayfasını inceleyin.
Veri boyutu
Kullanıcı tarafından sağlanan verilerin eşleştirilmesi, son kullanıcı gizliliğini korumak için verilerinizin boyutuyla ilgili şu koşulları uygular:
- Kullanıcı listenize en az 1.000 kayıt yüklemeniz gerekir.
- Eşleşme tablonuzun her başarılı güncellemesi, yeni eşleşen kullanıcıların minimum sayısını içermelidir. Bu davranış, fark kontrollerine benzer.
- Listeniz maksimum kayıt sayısını aşmamalıdır. Maksimum veri sınırı hakkında bilgi edinmek için Google temsilcinizle iletişime geçin.
Veri beslemeyi ayarlama
Başlamadan önce, Ads Data Hub hesabınızı veri bağlantıları oluşturacak şekilde yapılandırmanız gerekir. Veri eşleştirme ardışık düzeninizi bu şekilde oluşturursunuz. Bu adımları yalnızca bir kez gerçekleştirmeniz yeterlidir.
UPDM etkinleştirme aşamasında hesap kurulum sihirbazını açmak için Bağlantılar sayfasından Kuruluma başla'yı tıklayın.
Bağlantılar'a gidin.
BigQuery ve Cloud Storage için hangi izinler verilir?
KTSVE'yi BigQuery veya Cloud Storage ile kullanıma hazır hale getirirseniz Ads Data Hub hizmet hesaplarına verilen izinleri anlamak için bu referansı kullanın.
BigQuery
Data Fusion hizmet hesabı | |||||||||
Amaç | DataFusion hizmet hesabı, Ads Data Hub kullanıcı arayüzündeki kaynak alanlarının listesini görüntülemek için kullanılır. | ||||||||
Biçim | service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com |
||||||||
Gerekli erişim |
|
||||||||
Dataproc hizmet hesabı | |||||||||
Amaç | Dataproc hizmet hesabı, arka planda veri ardışık düzenlerini çalıştırmaktan sorumludur. | ||||||||
Biçim | some-number-compute@developer.gserviceaccount.com |
||||||||
Gerekli erişim |
|
||||||||
UPDM hizmet hesabı | |||||||||
Amaç | Eşleştirme işini çalıştırmak için UPDM hizmet hesabı kullanılır. | ||||||||
Biçim | service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com |
||||||||
Gerekli erişim |
|
Cloud Storage
Data Fusion hizmet hesabı | |||||||
Amaç | Data Fusion hizmet hesabı, Ads Data Hub kullanıcı arayüzündeki kaynak alanlarının listesini görüntülemek için kullanılır. | ||||||
Biçim | service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com |
||||||
Gerekli erişim |
|
||||||
Dataproc hizmet hesabı | |||||||
Amaç | Dataproc hizmet hesabı, arka planda veri ardışık düzenlerini çalıştırmaktan sorumludur. | ||||||
Biçim | some-number-compute@developer.gserviceaccount.com |
||||||
Gerekli erişim |
|
||||||
UPDM hizmet hesabı | |||||||
Amaç | Eşleştirme işini çalıştırmak için UPDM hizmet hesabı kullanılır. | ||||||
Biçim | service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com |
||||||
Gerekli erişim |
|
Diğer veri kaynakları
Diğer veri kaynakları için gerekli değildir
Birinci taraf verilerini besleme ve eşleme
Verileri giriş için biçimlendirme
Verilerinizin doğru şekilde eşleştirilebilmesi için aşağıdaki biçimlendirme koşullarına uyması gerekir:
- Aşağıdaki giriş alanı açıklamalarında belirtildiği durumlarda SHA256 karma oluşturma işlemini kullanarak yükleme yapmanız gerekir.
- Giriş alanları dize olarak biçimlendirilmelidir. Örneğin, BigQuery'nin SHA256 karma oluşturma işlevini 16'lık taban kodlama işleviyle (TO_HEX) kullanıyorsanız aşağıdaki dönüşümü kullanın:
TO_HEX(SHA256(user_data))
. - UPDM hem Base16 hem de Base64 kodlamasını destekler. Birinci taraf verilerinizin kodlamasını, Ads Data Hub sorgunuzda kullanılan kod çözme işlemiyle uyumlu hale getirmeniz gerekir. Birinci taraf verilerinizin kodlamasını değiştirirseniz Ads Data Hub sorgunuzu, kod çözme işlemini aynı tabandan yapacak şekilde güncellemeniz gerekir. Aşağıdaki örneklerde Base16 kodlaması kullanılmaktadır.
Kullanıcı Kimliği
- Düz metin
- Karma oluşturma: Yok
E-posta
- Boşlukları kaldır
- Tüm karakterleri küçük harfle yazın
- Tüm e-posta adresleri gmail.com veya hotmail.co.jp gibi bir alan adı içermelidir.
- Aksan işaretlerini kaldırın (ör. è, é, ê veya ë yerine e yazın)
- Karma oluşturma: Base16 kodlu SHA256
Geçerli: TO_HEX(SHA256("jeffersonloveshiking@gmail.com"))
Geçersiz: TO_HEX(SHA256("JéffersonLôvesHiking@gmail.com"))
Telefon
- Boşlukları kaldır
- E.164 biçiminde biçimlendirin. Örneğin, ABD örneği: +14155552671, Birleşik Krallık örneği: +442071838750
- Ülke kodunu ekleyin (ABD dahil)
- Ülke kodundan önceki "+" dışındaki tüm özel karakterleri kaldırın
- Karma oluşturma: 16 tabanlı kodlanmış SHA256
Geçerli: TO_HEX(SHA256("+18005550101"))
Geçersiz: TO_HEX(SHA256("(800) 555-0101"))
Ad
- Boşlukları kaldır
- Tüm karakterleri küçük harfle yazın
- Bayan gibi tüm ön ekleri kaldırın.
- Aksan işaretlerini (ör. è, é, ê veya ë) kaldırmayın.
- Karma oluşturma: Base16 kodlu SHA256
Geçerli: TO_HEX(SHA256("daní"))
Geçersiz: TO_HEX(SHA256("Daní"))
Soyadı
- Boşlukları kaldır
- Tüm karakterleri küçük harfle yazın
- Jr. gibi tüm ön ekleri kaldırın.
- Aksan işaretlerini (ör. è, é, ê veya ë) kaldırmayın.
- Karma oluşturma: 16 tabanlı kodlanmış SHA256
Geçerli: TO_HEX(SHA256("delacruz"))
Geçersiz: TO_HEX(SHA256("de la Cruz, Jr."))
Ülke
- Tüm müşteri verileriniz aynı ülkeden olsa bile ülke kodunu ekleyin
- Ülke verilerine karma oluşturma işlemi uygulamayın
- ISO 3166-1 alpha-2 ülke kodlarını kullanın
- Karma oluşturma: Yok
Geçerli: US
Geçersiz: United States of America
veya USA
Posta kodu
- Posta kodu verilerine karma oluşturma işlemi uygulamayın
- Hem ABD hem de uluslararası posta kodlarına izin verilir
- ABD için:
- 5 haneli kodlara izin verilir (ör. 94043)
- 5 basamak ve ardından 4 basamaklı uzantılara da izin verilir (ör. 94043-1351 veya 940431351).
- Diğer tüm ülkeler için:
- Biçimlendirme gerekmez (Küçük harf kullanmaya, boşluk ve özel karakterleri kaldırmaya gerek yoktur)
- Posta kodu uzantısı girmeyin
- Karma oluşturma: Yok
Karma doğrulama ve veri kodlaması
Verilerinizin doğru şekilde biçimlendirildiğinden emin olmak için aşağıdaki karma oluşturma doğrulama komut dosyalarını kullanabilirsiniz.
JavaScript
Base16
/**
* @fileoverview Provides the hashing algorithm for User-Provided Data Match, as
* well as some valid hashes of sample data for testing.
*/
async function hash(token) {
const formattedToken = token.trim().toLowerCase();
const hashArrayBuffer = await crypto.subtle.digest(
'SHA-256', (new TextEncoder()).encode(formattedToken));
return Array.from(new Uint8Array(hashArrayBuffer))
.map((b) => b.toString(16).padStart(2, '0'))
.join('');
}
function main() {
// Expected hash for test@gmail.com:
// 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
hash('test@gmail.com').then(result => console.log(result));
// Expected hash for +18005551212:
// 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
hash('+18005551212').then(result => console.log(result));
// Expected hash for John:
// 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
hash('John').then(result => console.log(result));
// Expected hash for Doe:
// 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
hash('Doe').then(result => console.log(result));
}
main()
Base64
/**
* @fileoverview Provides the hashing algorithm, as well as some valid hashes of
* sample data for testing.
*/
async function hash(token) {
const formattedToken = token.trim().toLowerCase();
const hashBuffer = await crypto.subtle.digest(
'SHA-256', (new TextEncoder()).encode(formattedToken));
const base64Str = btoa(String.fromCharCode(...new Uint8Array(hashBuffer)));
return base64Str;
}
function main() {
// Expected hash for test@gmail.com:
// h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
hash('test@gmail.com').then(result => console.log(result));
// Expected hash for +18005551212:
// YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
hash('+18005551212').then(result => console.log(result));
// Expected hash for John: ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
hash('John').then(result => console.log(result));
// Expected hash for Doe: eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
hash('Doe').then(result => console.log(result));
}
main()
Python
Base16
"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Supports: Python 2, Python 3
Sample hashes:
- Email 'test@gmail.com': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
"""
import base64
import hashlib
def updm_hash(token):
return hashlib.sha256(token.strip().lower().encode('utf-8')).hexdigest()
def print_updm_hash(token):
print('Hash: "{}"\t(Token: {})'.format(updm_hash(token), token))
def main():
print_updm_hash('test@gmail.com')
print_updm_hash('+18005551212')
print_updm_hash('John')
print_updm_hash('Doe')
if __name__ == '__main__':
main()
Base64
"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Supports: Python 2, Python 3
Sample hashes:
- Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
- Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
- First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
- Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
"""
import base64
import hashlib
def hash(token):
return base64.b64encode(
hashlib.sha256(
token.strip().lower().encode('utf-8')).digest()).decode('utf-8')
def print_hash(token, expected=None):
hashed = hash(token)
if expected is not None and hashed != expected:
print(
'ERROR: Incorrect hash for token "{}". Expected "{}", got "{}"'.format(
token, expected, hashed))
return
print('Hash: "{}"\t(Token: {})'.format(hashed, token))
def main():
print_hash(
'test@gmail.com', expected='h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=')
print_hash(
'+18005551212', expected='YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=')
print_hash('John', expected='ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=')
print_hash('Doe', expected='eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=')
if __name__ == '__main__':
main()
Go
Base16
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Sample hashes:
- Email 'test@gmail.com': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
*/
package main
import (
"crypto/sha256"
"fmt"
"strings"
)
// Hash hashes an email, phone, first name, or last name into the correct format.
func Hash(token string) string {
formatted := strings.TrimSpace(strings.ToLower(token))
hashed := sha256.Sum256([]byte(formatted))
encoded := fmt.Sprintf("%x", hashed[:])
return encoded
}
// PrintHash prints the hash for a token.
func PrintHash(token string) {
fmt.Printf("Hash: \"%s\"\t(Token: %s)\n", Hash(token), token)
}
func main() {
PrintHash("test@gmail.com")
PrintHash("+18005551212")
PrintHash("John")
PrintHash("Doe")
}
Base64
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Sample hashes:
- Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
- Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
- First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
- Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
*/
package main
import (
"crypto/sha256"
"encoding/base64"
"fmt"
"strings"
)
// Hash hashes an email, phone, first name, or last name into the correct format.
func Hash(token string) string {
formatted := strings.TrimSpace(strings.ToLower(token))
hashed := sha256.Sum256([]byte(formatted))
encoded := base64.StdEncoding.EncodeToString(hashed[:])
return encoded
}
// PrintHash prints the hash for a token.
func PrintHash(token string) {
fmt.Printf("Hash: \"%s\"\t(Token: %s)\n", Hash(token), token)
}
func main() {
PrintHash("test@gmail.com")
PrintHash("+18005551212")
PrintHash("John")
PrintHash("Doe")
}
Java
Base16
package updm.hashing;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Ascii;
import com.google.common.hash.Hashing;
/**
* Example of the UPDM hashing algorithm using hex-encoded SHA-256.
*
* <p>This uses the Guava Hashing to generate the hash: https://github.com/google/guava
*
* <p>Sample valid hashes:
*
* <ul>
* <li>Email "test@gmail.com": "87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674"
* <li>Phone "+18005551212": "61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44"
* <li>First name "John": "96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a"
* <li>Last name "Doe": "799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f"
* </ul>
*/
public final class HashExample {
private HashExample() {}
public static String hash(String token) {
String formattedToken = Ascii.toLowerCase(token).strip();
return Hashing.sha256().hashString(formattedToken, UTF_8).toString();
}
public static void printHash(String token) {
System.out.printf("Hash: \"%s\"\t(Token: %s)\n", hash(token), token);
}
public static void main(String[] args) {
printHash("test@gmail.com");
printHash("+18005551212");
printHash("John");
printHash("Doe");
}
}
Base64
package updm.hashing;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
/**
* Example of the hashing algorithm.
*
* <p>Sample hashes:
*
* <ul>
* <li>Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
* <li>Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
* <li>First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
* <li>Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
* </ul>
*/
public final class HashExample {
private HashExample() {}
public static String hash(String token) {
String formattedToken = token.toLowerCase().strip();
byte[] hash;
try {
hash = MessageDigest.getInstance("SHA-256").digest(formattedToken.getBytes(UTF_8));
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException("SHA-256 not supported", e);
}
return Base64.getEncoder().encodeToString(hash);
}
public static void printHash(String token) {
System.out.printf("Hash: \"%s\"\t(Token: %s)\n", hash(token), token);
}
public static void main(String[] args) {
printHash("test@gmail.com");
printHash("+18005551212");
printHash("John");
printHash("Doe");
}
}
SQL
Base16
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
The following code uses Google Standard SQL and can be run on BigQuery to generate match tables from unhashed data.
Sample hashes:
- Email 'test@gmail.com': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
The unhashed input table schema is assumed to be:
- Column name: UserID, Type: String
- Column name: Email, Type: String
- Column name: Phone, Type: String
- Column name: FirstName, Type: String
- Column name: LastName, Type: String
- Column name: PostalCode, Type: String
- Column name: CountryCode, Type: String
*/
CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
AS
SELECT
UserID,
TO_HEX(SHA256(LOWER(Email))) AS Email,
TO_HEX(SHA256(Phone)) AS Phone,
TO_HEX(SHA256(LOWER(FirstName))) AS FirstName,
TO_HEX(SHA256(LOWER(LastName))) AS LastName,
PostalCode,
CountryCode,
FROM
`your_project_name.your_dataset_name.input_unhashed_table_name`;
Base64
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
The following code uses Google Standard SQL and can be run on BigQuery to generate match tables from unhashed data.
Sample hashes:
- Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
- Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
- First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
- Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
The unhashed input table schema is assumed to be:
- Column name: UserID, Type: String
- Column name: Email, Type: String
- Column name: Phone, Type: String
- Column name: FirstName, Type: String
- Column name: LastName, Type: String
- Column name: PostalCode, Type: String
- Column name: CountryCode, Type: String
*/
CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
AS
SELECT
UserID,
TO_BASE64(SHA256(LOWER(Email))) AS Email,
TO_BASE64(SHA256(Phone)) AS Phone,
TO_BASE64(SHA256(LOWER(FirstName))) AS FirstName,
TO_BASE64(SHA256(LOWER(LastName))) AS LastName,
PostalCode,
CountryCode,
FROM
`your_project_name.your_dataset_name.input_unhashed_table_name`;
Katılma tuşları
Kullanıcı tarafından sağlanan verilerin bazı kombinasyonları diğerlerinden daha güçlüdür. Aşağıda, kullanıcı tarafından sağlanan farklı veri kombinasyonlarının göreceli güce göre sıralanmış listesi verilmiştir. Adres kullanıyorsanız ad, soyadı, ülke ve posta kodu bilgilerini eklemeniz gerekir.
- E-posta, Telefon, Adres (en güçlü)
- Telefon, Adres
- E-posta, Adres
- E-posta, Telefon
- Adres
- Telefon
- E-posta (en zayıf)
Eşleşme tablosu oluşturma
- Bağlantılar > Bağlantı oluştur > Kullanıcı tarafından sağlanan verileri eşleştirme'yi tıklayın.
- Bir veri kaynağı seçin ve Bağlan'ı tıklayın.
- İstenirse kimliğinizi doğrulayın ve Sonraki'yi tıklayın:
BigQuery
BigQuery'ye erişim izni vermek için Uygula'yı tıklayın.
Cloud Storage
Cloud Storage'a erişim izni vermek için Uygula'yı tıklayın.
MySQL
MySQL veritabanı konumunuzu, bağlantı noktasını, kullanıcı adınızı ve şifrenizi girin.
E3
Amazon S3 gizli erişim anahtarınızı girin.
PostgreSQL
PostgreSQL veritabanı konumunuzu, bağlantı noktasını, kullanıcı adınızı, şifrenizi ve veritabanınızı girin.
Redshift
Redshift veritabanı konumunuzu, bağlantı noktasını, kullanıcı adınızı, şifrenizi ve veritabanınızı girin.
sFTP
sFTP sunucunuzun konumunu, kullanıcı adını ve şifresini girin.
Snowflake
Snowflake hesap tanımlayıcınızı, kullanıcı adınızı ve şifrenizi girin.
- Veri kaynağınızı yapılandırın ve ardından Sonraki'yi tıklayın:
BigQuery
İçe aktarılacak BigQuery tablosunu seçin.
Cloud Storage
gsutil yolunu (ör.
gs://my-bucket/folder/
) girin ve dosyanızı biçimlendirin.Bu kaynağı ilk kez bağlıyorsanız bir uyarı gösterilir. Erişim izni vermek için Uygula'yı, ardından Sonraki'yi tıklayın. Not: İlgili paket için
storage.buckets.setIamPolicy
yetkisi verme iznine sahip bir role sahip olmanız gerekir.MySQL
Kullanmak istediğiniz MySQL veritabanını ve tablosunu seçin.
E3
Yüklemek istediğiniz dosyanın ana makine adresine göre URI'sini girin.
PostgreSQL
PostgreSQL şemasını ve tablo (veya görünüm) adını girin.
Redshift
Redshift şemasını ve tablo (veya görünüm) adını girin. Redshift varsayılan olarak şu şablonu uygulayan veritabanı konumu URL'lerini kullanır:
cluster-identifier.account-number.aws-region.redshift.amazonaws.com
.sFTP
Dosya yolunu ve adını şu şekilde biçimlendirerek girin:
/PATH/FILENAME.csv
Snowflake
Kullanmak istediğiniz Snowflake veritabanını, şemasını ve tablosunu (veya görünümünü) girin.
- Ara hedef olarak kullanılacak bir BigQuery veri kümesi seçip Sonraki'yi tıklayın. Bu adım, verilerinizin doğru şekilde biçimlendirilmesini sağlar.
- İsteğe bağlı: Verilerinizin biçimini değiştirin. Dönüşümler arasında karma oluşturma, küçük/büyük harf biçimlendirme ve alanları birleştirme/bölme yer alır.
- İşlem > > Dönüştür'ü tıklayın.
- Açılan panelde Dönüşüm ekle veya Başka bir dönüşüm ekle'yi tıklayın.
- Açılır menüden bir dönüşüm türü seçin ve koşulları girin.
- Kaydet'i tıklayın.
- En az bir birleştirme anahtarı seçin ve kullanacağınız alanları eşleyin. Ads Data Hub, aynı ada sahip alanları otomatik olarak eşler. Bu alanlar ile gösterilir. Gerekli düzenlemeleri yapın ve Sonraki'yi tıklayın.
- Program ayarlama:
- Bağlantınızı adlandırın.
- Önceki adımda seçtiğiniz veri kümesine verilerin ne sıklıkta içe aktarılacağını belirten bir sıklık ayarlayın. Her çalıştırma, hedef tablosundaki verilerin üzerine yazar.
- Kullanıcı kimliği çakışmalarının nasıl ele alınmasını istediğinizi belirtin. Mevcut eşleşmeyi tutma veya yeni verilerle üzerine yazma arasında seçim yapabilirsiniz.
- Son'u tıklayın. Eşleşme tabloları genellikle oluşturulduktan 12 saat sonra sorgulamaya hazır olur.
Bağlantı ayrıntılarını görüntüleme
Bağlantı ayrıntıları sayfası, belirli bir bağlantının son çalıştırmaları ve hataları hakkında bilgi verir. Belirli bir bağlantının ayrıntılarını görüntülemek için:
- Bağlantılar'ı tıklayın.
- Ayrıntılarını görüntülemek için bağlantının adını tıklayın.
- Artık bağlantının ayrıntılarını ve son çalıştırma işlemlerini görebilirsiniz. Her biri iki olası hata türünü gösterir: bağlantı düzeyinde (bağlantı çalıştırılmadı) ve satır düzeyinde hatalar (bir satır içe aktarılmadı).
- Başarısız durumu, bağlantının tamamının çalıştırılmadığını gösterir (ör. hizmet hesabı izin sorunu). Bağlantıyı hangi hataların etkilediğini görmek için hata durumunu tıklayın.
- Tamamlandı durumu, bağlantının başarıyla çalıştığını gösterir. Ancak yine de satır düzeyinde hatalar olabilir. Bu hatalar, "Hatalı satırlar" sütununda sıfır olmayan bir değerle gösterilir. Hangi kayıtların başarısız olduğu hakkında daha fazla bilgi edinmek için değeri tıklayın.
Bağlantıyı düzenleme
Aşağıdaki ayrıntılar düzenlenebilir:
- Bağlantı adı
- Planla
- Hedef tablo
- Alan eşleme
Veri kaynağının düzenlenmesi desteklenmez. Bir veri kaynağını değiştirmek için yeni bir bağlantı oluşturun ve eskisini silin.
Bağlantı ayrıntılarını düzenlemek için:
- Bağlantılar'ı tıklayın.
- Düzenlemek istediğiniz bağlantının adını tıklayın.
- Değiştirmek istediğiniz ayrıntıları düzenleyin:
- Bağlantı adı: Düzenle'yi tıklayın, yeni adı girin ve Enter tuşuna basın.
- Program: Düzenle'yi tıklayın, yeni programı ayarlayın ve Kaydet'i tıklayın.
- Hedef tablo: Düzenle'yi tıklayın, yeni hedef adını girin ve Kaydet'i tıklayın.
- Alan eşleme: simgesini tıklayın, alanlarda değişiklik yapın ve Kaydet'i tıklayın.
- simgesini tıklayın.
Eşleşen verileri sorgulayın
Eşleşme tablolarını sorgulama
Eşleşme tablolarınız gizlilik kontrollerini karşılamaya yetecek kadar veri içerdiğinde tablolarda sorgu çalıştırmaya hazırsınız demektir.
Birinci taraf verilerinin (1PD) orijinal tablosu my_data
ile gösterilir.
Bu kapsamda hem kimliği tanımlayabilecek bilgiler (PII) hem de kimliği tanımlayabilecek olmayan veriler yer alır.
Orijinal tablo, eşleşme tablosuyla karşılaştırıldığında kapsamdaki tüm 1PD verilerini temsil ettiğinden, raporlarınızı daha fazla analizle iyileştirebilir.
Ads Data Hub şemasında, user_id
alanı içeren her tabloya bir eşleşme tablosu eşlik eder. Örneğin Ads Data Hub, adh.google_ads_impressions
tablosu için kullanıcı kimliklerinizi içeren adh.google_ads_impressions_updm
adlı bir eşleşme tablosu da oluşturur.
Politikadan bağımsız tablolar için ayrı eşleşme tabloları oluşturulur. Örneğin Ads Data Hub, adh.google_ads_impressions_policy_isolated_youtube
tablosu için kullanıcı kimliklerinizi içeren adh.google_ads_impressions_policy_isolated_youtube_updm
adlı bir eşleşme tablosu da oluşturur.
Bu tablolar, orijinal tablolarda bulunan ve user_id
alanında eşleşmenin bulunduğu bir alt kümeyi içerir. Örneğin orijinal tablo hem Kullanıcı A hem de Kullanıcı B için veri içeriyorsa ancak yalnızca Kullanıcı A eşleşiyorsa Kullanıcı B eşleşme tablosunda yer almaz.
Eşleşme tabloları, customer_data_user_id
adlı ek bir sütun içerir. Bu sütun, kullanıcı tanımlayıcısını BYTES olarak depolar.
Sorgularınızı yazarken alanın türünü dikkate almanız önemlidir. SQL karşılaştırma operatörleri, karşılaştırdığınız dizelerin aynı türde olmasını bekler. user_id
içeriğinin birinci taraf verileri tablonuzda nasıl depolandığına bağlı olarak, verileri eşleştirmeden önce tablodaki verileri kodlamanız gerekebilir.
Başarılı eşleşmeler için birleştirme anahtarınızı BYTES'e yayınlamanız gerekir:
JOIN ON
adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)
Ayrıca, SQL'deki dize karşılaştırmaları büyük/küçük harfe duyarlıdır. Bu yüzden, dizelerin doğru şekilde karşılaştırılabilmeleri için karşılaştırmanızın her iki tarafındaki dizeleri kodlamanız gerekebilir.
Örnek sorgular
Eşleşen kullanıcıları sayma
Bu sorgu, Google Ads gösterim tablonuzdaki eşleşen kullanıcıların sayısını hesaplar.
/* Count matched users in Google Ads impressions table */
SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_updm
Bu sorgu, birinci taraf verilerinin Google Ads verileriyle nasıl birleştirileceğini gösterir:
/* Join first-party data with Google Ads data. The customer_data_user_id field
contains your ID as BYTES. You need to cast your join key into BYTES for
successful matches. */
SELECT
inventory_type,
COUNT(*) AS impressions
FROM
adh.yt_reserve_impressions_updm AS google_data_imp
LEFT JOIN
`my_data`
ON
google_data_imp.customer_data_user_id = CAST(my_data.user_id AS BYTES)
GROUP BY
inventory_type
KTSVE eşleşme oranı hakkında SSS
KTSVE eşleşme oranıyla ilgili SSS'lerin listesi için KTSVE eşleşme oranı hakkında SSS başlıklı makaleyi inceleyin.