Saya sedang membuat kueri dengan regex menggunakan UI web, kira-kira seperti ini:

SELECT uid, REGEXP_SUBSTR(PAGEPAGEPATHLEVEL3, '/(\\d+).*', 1, 1, 'e') as listing_id, SUM(TOTALHITS) as hits
FROM ga
WHERE PAGEPAGEPATHLEVEL2 = '/sales/'
GROUP BY (uid, listing_id)

Dan itu bekerja dengan sempurna. Namun, begitu saya meneruskan kueri yang sama melalui koneksi python/pandas

pd.read_sql_query(query, con=con)

Itu juga berfungsi, tetapi semua sel di listing_id kosong! Saya berasumsi sesuatu Dalam regex harus diloloskan, tetapi tidak dapat menemukan dokumentasi apa pun tentang itu

1
Philipp_Kats 12 Mei 2021, 03:58

1 menjawab

Jawaban Terbaik

Anda harus menghindari garis miring terbalik dalam kode Python Anda. Tambahkan r sebelum string Anda:

query = r"""
SELECT uid, REGEXP_SUBSTR(PAGEPAGEPATHLEVEL3, '/(\\d+).*', 1, 1, 'e') as listing_id, SUM(TOTALHITS) as hits
FROM ga
WHERE PAGEPAGEPATHLEVEL2 = '/sales/'
GROUP BY (uid, listing_id)
"""

Atau gandakan garis miring terbalik:

query = """
SELECT uid, REGEXP_SUBSTR(PAGEPAGEPATHLEVEL3, '/(\\\\d+).*', 1, 1, 'e') as listing_id, SUM(TOTALHITS) as hits
FROM ga
WHERE PAGEPAGEPATHLEVEL2 = '/sales/'
GROUP BY (uid, listing_id)
"""
1
Roméo Després 12 Mei 2021, 07:54