TGViewer
Мир аналитика данных Мир аналитика данных @analysts_world · 4.56K subscribers
Post #249 4.25K
Умный LIKE: как искать по множеству URL в SQL без боли

Праздники закончились и вот уже третий день суровых будней. Давайте честно признаемся, что после стольких дней отдыха работать ну оочень лень? Я вот честно признаю - мне лениво, но приходится собирать себя по частям и делать дело, много дел, вот еще одно дело, а вот это тоже надо. То запрос на аналитику, то отчёт, то внезапные «срочно-очень-важно» Знакомо? Ну, что ж, у всех примерно такое состояние, так что ничего - выживем.

Расскажу интересный рабочий кейс — как эффективно искать записи по сотням URL в SQL. Покажу на простом примере, как избежать горы OR условий.

Допустим, у нас есть большой список URL-адресов (например, из Excel-файла), и нам нужно найти все посещения этих страниц в нашей базе данных.

Сначала создаем тестовые данные.
import pandas as pd
from pandasql import sqldf

# Мини-датасет для демонстрации
data = {
'page_url': [
'https://site.com/blog/101',
'https://site.com/blog/102',
'https://site.com/blog/103',
'https://site.com/news/101',
'https://site.com/news/102',
'https://site.com/help',
'https://site.com/blog/201',
'https://site.com/blog/202',
'https://site.com/about',
'https://site.com/contact'
],
'visitor_id': [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010],
'visit_date': pd.date_range('2024-01-01', periods=10)
}

df_visits = pd.DataFrame(data)

Список интересующих нас блогов (как будто вы это выгрузили из excel файлика, который вам прислали коллеги, представьте что тут более 100 ссылок)
df_blogs = pd.DataFrame({
'blog_path': ['blog/101', 'blog/102', 'blog/201']
})

🌳Стандартный подход🌳
SELECT * FROM visits
WHERE page_url LIKE '%blog/101%'
OR page_url LIKE '%blog/102%'
OR page_url LIKE '%blog/201%'


🍀Автоматизированное решение 🍀

Динамически генерируем условия LIKE
conditions = " OR ".join([f"page_url LIKE '%{path}%'" for path in df_blogs['blog_path']])

query = f"""
SELECT
page_url,
visitor_id,
visit_date
FROM df_visits
WHERE {conditions}
"""
result = sqldf(query)

Если понравился способ - поставь лайк, а если вам тоже сложно работать после праздников, то добавь там еще каких-нибудь смайликов 🤪😀
  • ❤ 31
  • 🔥 9
  • 👏 3
  • ❤‍🔥 2
  • ⚡ 1
  • 🐳 1
  • 🌚 1
More from @analysts_world
  1. Sep 21, 2026📊 Задачка с собеседования Ну что, по итогам голосования большинство хотят задачки и sql.…
  2. Sep 14, 2026Post #345
  3. Sep 14, 2026Что-то я тут прям зачастила с A/B тестами 😅 Смотрю на последние посты и такое чувство, чт…
  4. Sep 1, 2026🎒 С 1 сентября, друзья! Сегодня как раз отправила своих детей в школу – и вот это чувство…
  5. Aug 24, 2026Вне выборки Обычно здесь про SQL, Python и AB-тесты. Но не всё, что важно, попадает в выбо…
  6. Aug 20, 2026Fuckup Night от создателей Trisigma, Ares и karpov.courses Согласитесь, ивенты, где все де…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →