마케팅 데이터 청소 쿼리 요리 책

마케팅 데이터 청소 쿼리 요리 책

에이전트 AI 시대 – 자율 시스템이 캠페인을 시작하고, 콘텐츠를 개인화하며, 인간의 승인없이 행동을 유발하는 경우 – 데이터 품질이 전부입니다.

이 AI 시스템은 CRM, 광고 플랫폼 또는 분석 테이블의 내용에 작용합니다. 해당 데이터가 구식, 복제 또는 일관성이 없다면 작은 실수를하는 것이 아니라 규모의 규모를 만듭니다.

그렇습니다. 이러한 자율 시스템의 결과는 항상 신뢰할 수있는 것은 아닙니다. 환각이 발생하며 결정은 때때로 마크를 놓치고 있습니다. 그러나 진보의 속도는 빠릅니다. 오늘 실험적으로 느끼는 것은 내일 기본 워크 플로가 될 수 있습니다.

그렇기 때문에 데이터에 대해 진지한 시간입니다. 팀이 아직 우선 순위를 갖지 않았다면 이곳은 시작하기에 좋은 곳입니다. 깨끗하고 일관성 있고 신뢰할 수있는 데이터는 더 이상 좋은 것이 아닙니다. 현대의 AI -Powered 마케팅의 기준선.

Gartner에 따르면, 데이터 품질 비용이 저하되는 조직은 평균 매년 1,290 만 달러효율성을 줄이고 기름칠 결정 – 결정. 그리고 AI가 현재 콘텐츠에서 타겟팅에 이르기까지 일상적인 실행을 더 많이 주도함에 따라 이러한 비용은 상승 할 가능성이 높습니다. 나쁜 데이터는 더 이상 배경에 머물러 있지 않습니다. 얻습니다 증폭.

이 기사를 Microsoft의 SQL Server Management Studio (SSMS)를 사용하는 마케팅 담당자를위한 실용적인 SQL 쿼리 요리 책으로 썼습니다. 기술이든 데이터이든간에 호기심이 있든이 예제는 일반적인 문제를 빠르게 해결하는 데 도움이됩니다. 그리고 ChatGpt 또는 LLM (Lange Model) (LLM)을 사용하면 쿼리를 쓰고 설명하면 시작하기 위해 깊은 SQL 지식이 필요하지 않습니다.

깨끗한 데이터와 직접 작업 할 수있는 능력을 사용하면 더 빨리 움직입니다. AI도 마찬가지입니다.

더 이상 개발자가 될 필요는 없습니다

역사적으로 SQL의 데이터 정리에는 기술 지원이 필요했습니다. 더 이상 사실이 아닙니다.

chatgpt 덕분에 마케팅 담당자는 이제 다음을 수행 할 수 있습니다.

  • 일반 영어로 데이터 문제를 설명하십시오
  • SQL 쿼리를 즉시 얻으십시오
  • SQL Server Management Studio에서 실행하거나 조정하십시오
  • chatgpt에게 다른 구조에 대한 쿼리를 설명하거나 다시 작성하도록 요청하십시오.

기본 SQL 만 이해하더라도, 어떻게 선택, 어디서, 작업에 가입하는 경우에도 강력한 쿼리를 작성하고 학습을 시작할 수 있습니다.

기본 SQL + chatGpt = 전문가, SQL- 글을 읽는 마케팅 담당자가되는 빠른 트랙.

이 요리 책을 사용하는 방법

  • SQL Server Management Studio (SSMS) 오픈
  • 아래 쿼리를 복사하십시오
  • 스키마와 일치하도록 테이블 또는 열 이름을 조정하십시오
  • 삭제 또는 업데이트를 적용하기 전에 변경 사항을 미리보기로 실행하십시오.
  • chatgpt를 사용하여 쿼리를 조정하거나 설명하십시오

참고 : 모든 쿼리는 선택을 사용하여 먼저 변경 사항을 미리 볼 수 있습니다. 업데이트 또는 삭제로 변환하기 전에 항상 확인하십시오.

marketing 마케팅 데이터 청소 쿼리 요리 책

이름 형식

1. 이름 자본화 수정 (적절한 경우)

SELECT 
  first_name,
  last_name,
  UPPER(LEFT(first_name, 1)) + LOWER(SUBSTRING(first_name, 2, LEN(first_name))) AS fixed_first_name,
  UPPER(LEFT(last_name, 1)) + LOWER(SUBSTRING(last_name, 2, LEN(last_name))) AS fixed_last_name
FROM contacts
WHERE first_name IS NOT NULL AND last_name IS NOT NULL;

이것은 회전합니다 :

  • 존 → 존
  • 스미스 → 스미스
  • Anna → Anna

2. 의심하거나 교환 된 이름을 깃발

플래그 이름은 길이가 특이하게 보이는 이름입니다 (교체 된 필드 또는 유효하지 않은 항목과 같은 오류에 대한 단서).

SELECT *
FROM contacts
WHERE LEN(first_name) > 15 OR LEN(last_name) 

이 깃발 :

  • First_name = Johnsonandjohnson, last_name = a
  • First_name = inderAccount, last_name = x

3. 이름과 성에서 전체 이름을 구축하십시오

SELECT 
  first_name,
  last_name,
  UPPER(LEFT(first_name, 1)) + LOWER(SUBSTRING(first_name, 2, LEN(first_name))) + ' ' +
  UPPER(LEFT(last_name, 1)) + LOWER(SUBSTRING(last_name, 2, LEN(last_name))) AS full_name
FROM contacts;

이것은 회전합니다 :

  • First_name = John, last_name = smith → full_name = John Smith
  • First_name = Anna, last_name = brown → full_name = Anna Brown

선행/후행 공간을 제거하십시오.

SELECT 
  LTRIM(RTRIM(first_name)) AS trimmed_first_name,
  LTRIM(RTRIM(last_name)) AS trimmed_last_name
FROM contacts;

이것은 회전합니다 :

  • ‘존’→ ‘존’
  • ‘스미스’→ ‘스미스’

퍼지 매칭 및 사운드 기반 복제

Soundex + 차이를 사용하여 비슷한 사운드 중복을 찾으십시오

음성적으로 유사한 이름을 비교합니다. 예: Jon Smith 그리고 John Smyth

WITH PossibleDupes AS (
  SELECT 
    a.contact_id AS id1,
    b.contact_id AS id2,
    a.first_name AS name1,
    b.first_name AS name2,
    a.email AS email1,
    b.email AS email2,
    ROW_NUMBER() OVER (PARTITION BY a.first_name ORDER BY a.last_updated DESC) AS rn
  FROM contacts a
  JOIN contacts b
    ON a.contact_id = 3
)
SELECT * FROM contacts
WHERE contact_id IN (
  SELECT id2 FROM PossibleDupes WHERE rn > 1
);

이것은 다음과 같이 잠재적 인 복제를 표시합니다.

  • Jon Smith와 John Smyth → Same Soundex 및 High Difference Score
  • Sara Adams와 Sarah Adamz → 가까운 발음, 잠재적 복제품
  • Last_updated의 최신 항목 만 유지하고 검토를 위해 다른 사람들을 플래그

주의: 퍼지 논리는 잘못된 양성을 만들 수 있습니다. 중복 제거를 결정하기 전에 항상 결과를 검사하십시오.

문자열 통일

1. 숫자에 주요 0을 추가하십시오

숫자 필드가 주요 0과 패딩을 통해 항상 같은 길이 (예 : 5 자리 ZIP, 8 자리 ID)인지 확인합니다.

SELECT 
  zip_code,
  REPLICATE('0', 5 - LEN(zip_code)) + zip_code AS padded_zip
FROM leads
WHERE LEN(zip_code) 

이것은 회전합니다 :

  • 123 → ‘00123’
  • 7890 → ‘07890’
  • 9 → ‘00009’

2. 복제 + 상단을 사용하여 텍스트를 표준화하십시오

코드, 캠페인 레이블 또는 일관되지 않은 텍스트 입력에 적합한 일관된 형식으로 값을 표준화합니다.

SELECT 
  campaign_code,
  UPPER(REPLICATE('0', 5 - LEN(campaign_code)) + campaign_code) AS formatted_code
FROM campaigns
WHERE LEN(campaign_code) 

이것은 회전합니다 :

  • ABC → 00ABC
  • X9 → 000×9

3. 국가 이름 표준화

공통 국가 변형을 표준 형태로지도합니다.

SELECT 
  country,
  CASE 
    WHEN country IN ('United States', 'US', 'U.S.') THEN 'USA' 
    ELSE country 
  END AS standardized_country
FROM contacts;

이것은 회전합니다 :

  • ‘미국’→ ‘미국’
  • ‘US’→ ‘USA’
  • ‘US’→ ‘USA’

4. 전화 번호 표준화 (예 : 미국)

가독성을위한 형식 10 자리 숫자.

SELECT 
  phone,
  '(' + SUBSTRING(phone, 1, 3) + ') ' + SUBSTRING(phone, 4, 3) + '-' + SUBSTRING(phone, 7, 4) AS formatted_phone
FROM contacts
WHERE LEN(phone) = 10 AND phone NOT LIKE '(%';

이것은 회전합니다 :

  • ‘2125551234’→ ‘(212) 555-1234’

5. 무료 대 비즈니스 이메일 제공 업체를 분류하십시오

SELECT 
  email,
  CASE 
    WHEN email LIKE '%gmail.com%' OR email LIKE '%yahoo.com%' OR email LIKE '%hotmail.com%' THEN 'free' 
    ELSE 'business' 
  END AS email_type
FROM leads;

이 깃발 :

  • gmail.com, yahoo.com, hotmail.com 이메일로 ‘무료’

참고 : 이것은 미리보기 전용 쿼리입니다. 분류하지만 데이터를 수정하지는 않습니다.

6. 직책을 정상화하십시오

SELECT 
  job_title,
  CASE 
    WHEN LOWER(job_title) LIKE '%manager%' 
      OR LOWER(job_title) LIKE '%lead%' 
      OR LOWER(job_title) LIKE '%head%' THEN 'Manager' 
    ELSE 'Other' 
  END AS job_level
FROM contacts;

이것은 분류됩니다.

  • ‘제품 관리자’, ‘팀 리드’, ‘성장 책임자’→ ‘관리자’레벨

누락 된 데이터 처리

1. 중요한 필드가 누락 된 레코드를 찾으십시오

SELECT *
FROM contacts
WHERE email IS NULL OR first_name IS NULL OR last_name IS NULL;

이것은 다음과 같습니다.

  • 주요 Identity Fields 누락 된 연락처 : 이메일, 이름 또는 성

2. IsNull을 사용하여 기본값으로 결 측값을 채우십시오

실종 산업을 ‘알 수 없음’으로 채우십시오.

SELECT 
  industry,
  ISNULL(industry, 'Unknown') AS cleaned_industry
FROM leads;

누락 된 UTM 매체를 ‘이메일’으로 채우십시오.

SELECT 
  utm_medium,
  ISNULL(utm_medium, 'email') AS cleaned_medium
FROM sessions;

널 리드 점수를 0으로 채우십시오

SELECT 
  lead_score,
  ISNULL(lead_score, 0) AS final_score
FROM leads;

이것은 회전합니다 :

  • NULL → ‘알 수없는’
  • NULL → ‘이메일’
  • NULL → 0 (실패 로직을 피하는 데 도움이됩니다)

3. Coalesce를 사용하여 폴백 값을 만듭니다

사용 가능한 필드에서 전체 이름을 결합하십시오.

SELECT 
  full_name,
  first_name,
  last_name,
  COALESCE(full_name, first_name + ' ' + last_name, 'Anonymous') AS display_name
FROM contacts;

이것은 회전합니다 :

  • full_name = null, first_name = ‘John’, last_name = ‘Smith’→ ‘John Smith’
  • 모든 필드 NULL → ‘익명’

백업 필드에서 누락 된 회사를 채우십시오

SELECT 
  company,
  employer,
  COALESCE(company, employer, 'Unknown') AS known_company
FROM contacts;

중복 데이터를 피합니다

1. 이메일로 연락처 중복을 선택하십시오

WITH RankedContacts AS (
  SELECT *,
         ROW_NUMBER() OVER (PARTITION BY email ORDER BY Create_Date DESC) AS rn
  FROM contacts
)
SELECT * FROM RankedContacts 
WHERE rn > 1;

이것은 다음과 같습니다.

2. 중복 된 전체 이름을 감지하십시오

WITH RankedNames AS (
  SELECT *,
         ROW_NUMBER() OVER (PARTITION BY first_name, last_name ORDER BY created_at DESC) AS rn
  FROM contacts
)
SELECT *
FROM RankedNames
WHERE rn > 1;

이 깃발 :

  • 같은 이름을 가진 사람들이 여러 번 입력했습니다.

3. 중복 이메일 + 이름 콤보를 감지하십시오

WITH ComboDupes AS (
  SELECT *,
         ROW_NUMBER() OVER (
           PARTITION BY email, first_name, last_name 
           ORDER BY contact_id
         ) AS rn
  FROM contacts
)
SELECT *
FROM ComboDupes
WHERE rn > 1;

이것은 다음을 식별합니다.

  • 이름과 이메일에 따라 같은 사람의 항목을 반복하십시오.

범위 외 값 및 부정확 한 데이터

1. 범위 외 값을 찾으십시오

비현실적인 가치 (연령, 리드 점수, 전환율).
예:conversion_rate > 1 또는 age

SELECT *
FROM leads
WHERE age NOT BETWEEN 18 AND 100
   OR lead_score NOT BETWEEN 0 AND 100
   OR conversion_rate > 1;

이 깃발 :

  • Age = 7 → Flagged (너무 젊음)
  • lead_score = 130 → 신고 (0과 100 사이 여야합니다)
  • converion_rate = 1.2 → 신고 (100%가 넘는 유효하지 않음)

2. 모순 값을 감지합니다

예:

  • 구독 취소 후 이메일이 열렸습니다
  • 미국의 영국 전화 번호

리드 점수 = 0이지만 다중 변환

SELECT *
FROM contacts
WHERE (email_status = 'Unsubscribed' AND email_opened = 1)
   OR (country = 'USA' AND phone LIKE '+44%')
   OR (lead_score = 0 AND conversion_count > 0);

이 깃발 :

  • email_status = ‘byscribed’및 email_opened = 1 → 옵트 아웃 후 이메일 열기 이메일
  • Country = ‘USA’및 Phone = ‘+47911123456’→ 미국 세그먼트의 영국 번호
  • lead_score = 0 및 converion_count = 3 → 점수는 활동을 반영하지 않습니다.

3. 잘못된 이메일을 감지하십시오

깃발이없는 깃발 @ 또는 도메인.

SELECT *
FROM leads
WHERE email NOT LIKE '%@%.%' OR email IS NULL OR email = '';

이것은 다음과 같습니다.

4. 내부 또는 테스트 연락처를 찾으십시오

SELECT *
FROM contacts
WHERE email LIKE '%test%' OR email LIKE '%internal%' OR name LIKE '%demo%';

이 깃발 :

5. 잘못된 날짜를 감지하십시오

SELECT *
FROM events
WHERE event_date > GETDATE() OR event_date IS NULL;

이것은 다음과 같습니다.

  • 미래 날짜
  • 비어 있거나 널 이벤트 날짜

하나의 열의 데이터를 더 많은 열로 분할합니다

1. 전체 이름을 먼저, 마지막으로 나눕니다

SELECT 
  full_name,
  LEFT(full_name, CHARINDEX(' ', full_name) - 1) AS first_name,
  SUBSTRING(full_name, CHARINDEX(' ', full_name) + 1, LEN(full_name)) AS last_name
FROM contacts
WHERE full_name LIKE '% %';

이것은 회전합니다 :

  • ‘John Smith’→ First_name = ‘John’, last_name = ‘Smith’

2. 위치 필드를 도시와 국가로 분할하십시오

형식 가정 : “도시, 국가”

SELECT 
  location,
  LEFT(location, CHARINDEX(',', location) - 1) AS city,
  LTRIM(SUBSTRING(location, CHARINDEX(',', location) + 1, LEN(location))) AS country
FROM leads
WHERE location LIKE '%,%';

이것은 회전합니다 :

  • 파리, 프랑스 → 시티 = ‘파리’, 국가 = ‘프랑스’

보너스 : 스키마에서 GPT를 기차하십시오

보다 정확하고 관련성이 높은 SQL의 경우, 교육을받은 맞춤형 GPT 보조원을 작성하십시오.

  • CRM 테이블 및 열 이름 목록
  • 팀의 일반적인 청소 쿼리
  • 규칙 형식 또는 이름 지정 패턴에 대한 메모

이제 Chatgpt는 일반 SQL을 작성하지 않습니다. SQL을 작성합니다.

최종 생각

에이전트 AI는 마케팅 담당자의 작동 방식을 바꾸고 있습니다. 빠르고 자율적이며 강력하지만 데이터의 품질에 전적으로 의존합니다.

SQL과 Chatgpt 덕분에 마케팅 담당자는 이제 병목 현상이나 기술 부채없이 해당 데이터 자체를 정리할 수 있습니다. 엔지니어가 될 필요는 없습니다. 당신은 그냥 필요합니다 :

  • 올바른 질문
  • 올바른 쿼리
  • 그리고 올바른 조수

이 요리 책을 사용하십시오. 프롬프트 chatgpt. 당신이 갈 때 배우십시오.

깨끗한 데이터는 더 이상 최적화가 아닙니다. AI가 예상대로 일하게하는 열쇠입니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다