Topik ini menjelaskan sintaksis dasar dan contoh fungsi IP.
Layanan Log Sederhana mendukung fungsi IP berikut.
Dalam pernyataan analitik Layanan Log, sertakan string dalam tanda petik tunggal (''). Layanan Log menginterpretasikan nilai tanpa tanda kutip atau yang diapit tanda petik ganda ("") sebagai nama field atau nama kolom. Misalnya, 'status' adalah sebuah string, sedangkan status atau "status" merujuk pada field log bernama status.
|
Kategori |
Fungsi |
Sintaksis |
Deskripsi |
SQL |
SPL |
|
Fungsi alamat IPv4 |
|
Mengembalikan nama kota dalam bahasa Tiongkok untuk alamat IPv4 yang ditentukan. |
√ |
× |
|
|
|
Mengembalikan kode divisi administratif kota untuk alamat IPv4 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan bujur dan lintang kota untuk alamat IPv4 yang ditentukan. Setiap kota berkorespondensi dengan satu pasangan bujur dan lintang. |
√ |
× |
||
|
|
Mengembalikan nama negara atau wilayah dalam bahasa Tiongkok untuk alamat IPv4 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan kode negara atau wilayah untuk alamat IPv4 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan kode negara atau wilayah untuk alamat IPv4 yang ditentukan. Hasil yang dikembalikan adalah kode negara atau wilayah. |
√ |
× |
||
|
|
Menentukan apakah alamat IPv4 yang ditentukan merupakan alamat privat atau publik. |
√ |
× |
||
|
|
Mengembalikan bujur dan lintang untuk alamat IPv4 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan penyedia layanan Internet (ISP) untuk alamat IPv4 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan nama negara bagian dalam bahasa Tiongkok untuk alamat IPv4 yang ditentukan. Hasil yang dikembalikan adalah nama negara bagian dalam bahasa Tiongkok. |
√ |
× |
||
|
|
Mengembalikan kode divisi administratif negara bagian untuk alamat IPv4 yang ditentukan. Hasilnya adalah kode divisi administratif untuk negara bagian. |
√ |
× |
||
|
Fungsi blok CIDR IPv4 |
|
Mengembalikan prefiks jaringan untuk alamat IPv4 dan panjang prefiks yang ditentukan. |
√ |
× |
|
|
|
Menentukan apakah blok CIDR IPv4 merupakan subnet dari blok lainnya. |
√ |
× |
||
|
|
Memeriksa apakah alamat IPv4 berada dalam blok CIDR IPv4 tertentu. |
√ |
× |
||
|
|
Mengembalikan alamat IP terbesar dalam blok CIDR IPv4 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan alamat IP terkecil dalam blok CIDR IPv4 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan rentang alamat IP dari blok CIDR IPv4 yang ditentukan. |
√ |
× |
||
|
Fungsi alamat IPv6 |
|
Mengembalikan nama kota dalam bahasa Tiongkok untuk alamat IPv6 yang ditentukan. |
√ |
× |
|
|
|
Mengembalikan kode divisi administratif kota untuk alamat IPv6 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan bujur dan lintang kota untuk alamat IPv6 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan nama negara atau wilayah dalam bahasa Tiongkok untuk alamat IPv6 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan kode negara atau wilayah untuk alamat IPv6 yang ditentukan. |
√ |
× |
||
|
|
Menentukan apakah alamat IPv6 yang ditentukan merupakan alamat privat atau publik. |
√ |
× |
||
|
|
Mengembalikan penyedia layanan Internet (ISP) untuk alamat IPv6 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan nama provinsi dalam bahasa Tiongkok untuk alamat IPv6 yang ditentukan. |
√ |
× |
||
|
|
Mengembalikan kode divisi administratif provinsi untuk alamat IPv6 yang ditentukan. |
√ |
× |
Fungsi ip_to_city
Fungsi ip_to_city mengembalikan kota untuk alamat IPv4 yang ditentukan.
Sintaksis
-
Mengembalikan nama kota dalam bahasa Tiongkok.
ip_to_city(x) -
Mengembalikan kode divisi administratif kota.
ip_to_city(x,'en')
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4. |
Jenis nilai kembalian
varchar
Contoh
Contoh ini menghitung waktu permintaan rata-rata, waktu permintaan maksimum, dan ID permintaan yang terkait dengan waktu maksimum untuk setiap kota.
-
Pernyataan kueri dan analisis
* | SELECT AVG(request_time) AS avg_request_time, MAX(request_time) AS max_request_time, MAX_BY(requestId, request_time) AS requestId, ip_to_city(client_ip) AS city GROUP BY city -
Kueri mengembalikan tiga catatan: Tianjin (avg_request_time: 44,85, max_request_time: 80,0, requestId: i-02); Lijiang (avg_request_time: 46,47, max_request_time: 80,0, requestId: i-01); dan Hegang (avg_request_time: 43,87, max_request_time: 80,0, requestId: i-01).
Fungsi ip_to_city_geo
Fungsi ip_to_city_geo mengembalikan bujur dan lintang kota untuk alamat IPv4 yang ditentukan.
Sintaksis
ip_to_city_geo(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4. |
Jenis nilai kembalian
String varchar dalam format latitude,longitude.
Contoh
Dapatkan bujur dan lintang alamat IPv4 untuk memetakan distribusi client.
-
Pernyataan kueri
* | SELECT count(*) AS PV, ip_to_city_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC -
Kueri mengembalikan dua baris. Baris pertama memiliki
PVsebesar 9113 dan nilaigeo39,9288,116,389 (Beijing). Baris kedua memilikiPVsebesar 5784 dan nilaigeo31,2222,121,458060 (Shanghai).
Fungsi ip_to_country
Fungsi ip_to_country mengembalikan negara atau wilayah untuk alamat IPv4 yang ditentukan.
Sintaksis
-
Mengembalikan nama negara atau wilayah dalam bahasa Tiongkok.
ip_to_country(x) -
Mengembalikan kode negara atau wilayah.
ip_to_country(x,'en')
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4. |
Jenis nilai kembalian
varchar
Contoh
Contoh ini menghitung waktu permintaan rata-rata, waktu permintaan maksimum, dan ID permintaan yang sesuai dengan waktu maksimum untuk setiap negara atau wilayah.
-
Pernyataan kueri
* | SELECT AVG(request_time) AS avg_request_time, MAX(request_time) AS max_request_time, MAX_BY(requestId, request_time) AS requestId, ip_to_country(client_ip) AS country GROUP BY country -
Hasil kueri dan analisis menunjukkan tiga catatan: Hong Kong (Tiongkok) (
avg_request_time: 45,27,max_request_time: 80,0,requestId: i-02); Australia (avg_request_time: 47,08,max_request_time: 80,0,requestId: i-01); dan India (avg_request_time: 39,39,max_request_time: 77,0,requestId: i-01).
Fungsi ip_to_country_code
Fungsi ip_to_country_code mengembalikan kode negara atau wilayah untuk alamat IPv4 yang diberikan.
Sintaksis
ip_to_country_code(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4. |
Jenis nilai kembalian
varchar
Contoh
Kueri berikut menghitung waktu permintaan rata-rata, waktu permintaan maksimum, dan ID permintaan yang terkait dengan waktu permintaan maksimum untuk setiap negara atau wilayah.
-
Kueri
* | SELECT AVG(request_time) AS avg_request_time, MAX(request_time) AS max_request_time, MAX_BY(requestId, request_time) AS requestId, ip_to_country_code(client_ip) AS country GROUP BY country -
Kueri mengembalikan dua baris hasil. Pada baris pertama, avg_request_time adalah
45,012, max_request_time adalah80,0, requestId adalahi-01, dan country adalahMO. Pada baris kedua, avg_request_time adalah46,286, max_request_time adalah77,0, requestId adalahi-02, dan country adalahGB.
Fungsi ip_to_domain
Fungsi ip_to_domain menentukan apakah alamat IPv4 merupakan alamat privat atau alamat publik.
Sintaksis
ip_to_domain(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4. |
Jenis nilai kembalian
Mengembalikan string varchar dengan salah satu nilai berikut:
-
'intranet': menunjukkan alamat privat.
-
'internet': menunjukkan alamat publik.
Contoh
Hitung jumlah permintaan yang tidak berasal dari jaringan privat.
-
Pernyataan kueri
* | SELECT count(*) AS PV where ip_to_domain(client_ip) != 'intranet' -
Hasil kueri dan analisis: Jumlah PV adalah
941786.
Fungsi ip_to_geo
Fungsi ip_to_geo mengembalikan lintang dan bujur untuk alamat IPv4 yang ditentukan. Untuk informasi lebih lanjut tentang fungsi geo, lihat Fungsi Geo.
Sintaksis
ip_to_geo(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4. |
Jenis nilai kembalian
String varchar dalam format latitude,longitude.
Contoh
Contoh ini mengambil lintang dan bujur untuk alamat IPv4 guna mengidentifikasi distribusi client.
-
Pernyataan kueri
* | SELECT count(*) AS PV, ip_to_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC -
Hasil kueri dan analisis berisi dua catatan sampel: satu dengan PV sebesar 5122 dan geo 39,1423,117,173, serta yang lain dengan PV sebesar 4960 dan geo 29,5569,106,553.
Fungsi ip_to_provider
Fungsi ip_to_provider mengembalikan ISP dari alamat IPv4.
Sintaksis
ip_to_provider(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4. |
Jenis nilai kembalian
String varchar.
Contoh
Hitung waktu permintaan rata-rata berdasarkan ISP.
-
Pernyataan kueri
* | SELECT avg(request_time) AS avg_request_time, ip_to_provider(client_ip) AS provider GROUP BY provider ORDER BY avg_request_time -
Kueri mengembalikan tiga baris. Nilai avg_request_time adalah 18,0, 25,0, dan 26,0, dengan nilai provider masing-masing Reliance Communications, CAT, dan Wangsu.
Fungsi ip_to_province
Fungsi ip_to_province mengembalikan negara bagian untuk alamat IPv4 yang diberikan.
Sintaksis
-
Mengembalikan nama negara bagian dalam bahasa Tiongkok.
ip_to_province(x) -
Mengembalikan nama negara bagian dalam bahasa Inggris.
ip_to_province(x,'en')
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4 yang akan dicari. |
Jenis nilai kembalian
VARCHAR
Contoh
Hitung 10 negara bagian teratas berdasarkan total permintaan.
-
Pernyataan kueri
* | SELECT count(*) as PV, ip_to_province(client_ip) AS province GROUP BY province ORDER BY PV desc LIMIT 10Untuk memfilter permintaan intranet dari hasil, gunakan pernyataan kueri berikut.
* | SELECT count(*) AS PV, ip_to_province(client_ip) AS province WHERE ip_to_domain(client_ip) != 'intranet' GROUP BY province ORDER BY PV DESC LIMIT 10 -
Hasil kueri: Menjalankan pernyataan kueri pertama mengembalikan tabel dengan kolom PV dan province. Hasil diurutkan berdasarkan PV secara menurun. Dalam hasil sampel, provinsi Guangdong berada di peringkat pertama dengan PV sebesar 368. Jika alamat IP tidak dapat diselesaikan ke provinsi, nilai dalam kolom province kosong.
Fungsi ip_prefix
Fungsi ip_prefix mengembalikan prefiks subnet untuk alamat IPv4 yang diberikan dalam notasi CIDR, seperti 192.168.1.0/24.
Sintaksis
ip_prefix(x, prefix_bits)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv4. |
|
prefix_bits |
Panjang prefiks. |
Jenis nilai kembalian
varchar
Contoh
Dapatkan prefiks subnet untuk alamat IP dalam field client_ip.
-
Pernyataan kueri
* | SELECT ip_prefix(client_ip,24) AS client_ip -
Kueri mengembalikan kolom
client_ipyang berisi prefiks subnet /24, sepertixx.xx.xx.0/24.
is_prefix_subnet_of
Fungsi is_prefix_subnet_of memeriksa apakah blok CIDR IPv4 merupakan subnet dari blok lainnya.
Sintaksis
is_prefix_subnet_of(x, y)
Parameter
|
Parameter |
Deskripsi |
|
x |
Blok CIDR IPv4 induk. |
|
y |
Blok CIDR IPv4 yang akan diuji sebagai subnet potensial. |
Jenis nilai kembalian
Mengembalikan nilai boolean: true jika y adalah subnet dari x, dan false jika tidak.
Contoh
Contoh ini memeriksa apakah blok CIDR yang berasal dari field client_ip merupakan subnet dari 192.168.0.1/24.
-
Pernyataan kueri
* | SELECT is_prefix_subnet_of('192.168.0.1/24',concat(client_ip,'/24')) -
Hasil kueri dan analisis berisi kolom
_col0dengan dua baris, keduanya bernilaifalse. Nilai false menunjukkan bahwa client_ip dari log yang bersangkutan tidak berada dalam subnet 192.168.0.1/24.
Fungsi is_subnet_of
Fungsi is_subnet_of menentukan apakah alamat IPv4 berada dalam blok CIDR.
Sintaksis
is_subnet_of(x, y)
Parameter
|
Parameter |
Deskripsi |
|
x |
Blok CIDR IPv4. |
|
y |
Alamat IPv4. |
Jenis nilai kembalian
Boolean
Contoh
Periksa apakah nilai field client_ip berada dalam blok CIDR 192.168.0.1/24.
-
Pernyataan kueri
* | SELECT is_subnet_of('192.168.0.1/24',client_ip)
Fungsi ip_subnet_min
Fungsi ip_subnet_min mengembalikan alamat IP terkecil dalam blok CIDR IPv4.
Sintaksis
ip_subnet_min(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Blok CIDR IPv4. |
Jenis nilai kembalian
varchar
Contoh
Contoh ini mengembalikan alamat IP terkecil dalam blok CIDR yang berisi alamat IP dari field client_ip.
-
Pernyataan kueri
* | SELECT ip_subnet_min(concat(client_ip,'/24')) -
Kueri mengembalikan satu baris dengan kolom bernama
_col0. Kolom ini menunjukkan alamat IP terkecil dalam blok CIDR /24 yang berisiclient_ip. Sebagian konten disamarkan.
Fungsi ip_subnet_max
Fungsi ip_subnet_max mengembalikan alamat IP terbesar dalam blok CIDR IPv4.
Sintaksis
ip_subnet_max(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Blok CIDR IPv4. |
Jenis nilai kembalian
varchar
Contoh
Menghitung alamat IP terbesar dari subnet /24 untuk alamat IP dalam field client_ip.
-
Pernyataan kueri dan analisis
* | SELECT ip_subnet_max(concat(client_ip,'/24')) -
Kolom
_col0menampilkan hasil fungsiip_subnet_max: alamat IP terbesar dari subnet /24. Sebagian konten disunting.
ip_subnet_range
Fungsi ip_subnet_range mengembalikan alamat awal dan akhir dari blok CIDR IPv4.
Sintaksis
ip_subnet_range(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Blok CIDR IPv4. |
Jenis nilai kembalian
Array JSON.
Contoh
Ambil rentang alamat dari blok CIDR IPv4 yang berisi alamat IP dalam field client_ip.
-
Pernyataan kueri dan analisis
* | SELECT ip_subnet_range(concat(client_ip,'/24')) -
Hasil kueri dan analisis berisi kolom
_col0. Kolom ini berisi array JSON, seperti["xxx.xxx.xxx.0","xxx.xxx.xxx.255"], yang merepresentasikan alamat awal dan akhir dari blok CIDR IPv4.
ipv6_to_city
Fungsi ipv6_to_city mengembalikan kota untuk alamat IPv6 yang ditentukan.
Sintaksis
ipv6_to_city(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv6. |
Jenis nilai kembalian
varchar
Contoh
Hitung permintaan berdasarkan kota.
-
Pernyataan kueri dan analisis
* | SELECT ipv6_to_city(ipv6Address) AS city, count(*) AS count GROUP BY city -
Hasil kueri dan analisis mencantumkan setiap kota dan jumlah catatannya, seperti Anyang (18), Baoding (42), Baoshan (3), dan Binzhou (9).
Ipv6_to_city_code
Fungsi ipv6_to_city_code mengembalikan kode divisi administratif kota untuk alamat IPv6 yang ditentukan.
Sintaksis
ipv6_to_city_code(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv6. |
Jenis nilai kembalian
varchar
Contoh
Contoh ini mengambil kode divisi administratif kota untuk alamat IPv6.
-
Pernyataan kueri
* | SELECT ipv6Address, ipv6_to_city_code(ipv6Address) AS cityCode WHERE cityCode <> '' -
Hasil kueri dan analisis: Fungsi
ipv6_to_city_codemengonversi alamat IPv6, mengembalikan cityCode sebesar350100.
Ipv6_to_city_geo
Fungsi ipv6_to_city_geo mengembalikan bujur dan lintang untuk alamat IPv6.
Sintaksis
ipv6_to_city_geo(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
|
Jenis nilai kembalian
Fungsi ini mengembalikan string varchar dalam format bujur,lintang.
Contoh
Contoh ini menunjukkan cara mendapatkan bujur dan lintang untuk alamat IPv6 guna menganalisis distribusi client.
-
Pernyataan kueri
* | SELECT ipv6_to_city_geo(ipv6Address) AS geo, count(*) AS PV GROUP BY geo ORDER BY PV DESC -
Kueri mengembalikan kolom
geodanPV. Hasil sampel, disajikan sebagai pasangan (geo, PV), meliputi: (133,397995,-24,9121, 6270), (10,45415,51,164181, 3813), (-2,23001,54,314072, 2055), dan (121,5654268,25,0329636, 1893).
Fungsi ipv6_to_country
Fungsi ipv6_to_country mengidentifikasi negara atau wilayah dari alamat IPv6 yang ditentukan.
Sintaksis
ipv6_to_country(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv6. |
Jenis nilai kembalian
varchar
Contoh
Hitung 10 negara atau wilayah teratas berdasarkan jumlah total permintaan.
-
Pernyataan kueri
* | SELECT count(*) AS PV, ipv6_to_country(ipv6Address) AS country WHERE country <> '' GROUP BY country ORDER BY PV DESC LIMIT 10 -
Hasil kueri dan analisis: Kueri mengembalikan 10 catatan. Contohnya: Jerman (3813), Taiwan (2337), Inggris Raya (2055), Swedia (1119), Belanda (1014), Amerika Serikat (942), Rusia (930), dan Malaysia (867)...
ipv6_to_country_code
Fungsi ipv6_to_country_code mengembalikan kode negara atau wilayah untuk alamat IPv6.
Sintaksis
ipv6_to_country_code(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv6. |
Jenis nilai kembalian
Mengembalikan nilai varchar.
Contoh
Contoh ini mendapatkan kode negara atau wilayah untuk alamat IPv6.
-
Pernyataan kueri
* | SELECT ipv6Address, ipv6_to_country_code(ipv6Address) AS code WHERE cityCode <> '' -
Dalam hasil kueri, fungsi
ipv6_to_country_codemenyelesaikan alamat IPv6 ke kode negaranya, misalnya,CNuntuk alamat di Tiongkok.
Fungsi ipv6_to_domain
Fungsi ipv6_to_domain mengklasifikasikan alamat IPv6 sebagai alamat privat atau alamat publik.
Sintaksis
ipv6_to_domain(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv6. |
Jenis nilai kembalian
varchar. Fungsi ini mengembalikan salah satu nilai berikut:
-
intranet: Alamat privat.
-
internet: Alamat publik.
Contoh
Contoh ini menghitung permintaan dari jaringan privat dan jaringan publik.
-
Pernyataan kueri dan analisis
* | SELECT ipv6_to_domain(ipv6Address) AS domain, count(*) AS count GROUP BY domain -
Kueri mengembalikan tabel dengan dua kolom: domain dan count. Dalam contoh ini, jumlah untuk
intranetadalah 9 dan untukinternetadalah 38.067.
Fungsi ipv6_to_provider
Fungsi ipv6_to_provider mengembalikan ISP untuk alamat IPv6 yang ditentukan.
Sintaksis
ipv6_to_provider(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv6. |
Jenis nilai kembalian
varchar
Contoh
Contoh ini menemukan 10 ISP teratas berdasarkan jumlah total permintaan.
-
Pernyataan kueri dan analisis
* | SELECT ipv6_to_provider(ipv6Address) AS provider, count(*) AS count GROUP BY provider ORDER BY count DESC LIMIT 10 -
Hasil kueri dan analisis: Kueri mengembalikan daftar ISP yang diurutkan berdasarkan jumlah permintaan secara menurun. 10 hasil teratas mencakup entri seperti
edu.tw(2235),colt.net(1512),maxis.com.my(780),citictel-cpc.com(453),CSTNET(348),ntt.com(261),att.com(258), danlibertyglobal.com(174).
Fungsi ipv6_to_province
Fungsi ipv6_to_province mengembalikan provinsi dari alamat IPv6.
Sintaksis
ipv6_to_province(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv6. |
Jenis nilai kembalian
varchar
Contoh
Contoh ini menemukan 10 provinsi teratas berdasarkan jumlah total permintaan.
-
Pernyataan kueri dan analisis
* | SELECT count(*) AS PV, ipv6_to_province(ipv6Address) AS province WHERE province <> '' GROUP BY province ORDER BY PV DESC LIMIT 10 -
Hasil kueri dan analisis: Kueri mengembalikan kolom PV dan province, diurutkan berdasarkan PV secara menurun. Hasil sampel meliputi Jiangsu (564), Guangdong (558), Wilayah Federal Kuala Lumpur (555), Shandong (507), Henan (435), Sichuan (354), Zhejiang (336), dan Anhui (312).
Fungsi ipv6_to_province_code
Fungsi ipv6_to_province_code mengembalikan kode divisi administratif provinsi untuk alamat IPv6 yang ditentukan.
Sintaksis
ipv6_to_province_code(x)
Parameter
|
Parameter |
Deskripsi |
|
x |
Alamat IPv6. |
Jenis nilai kembalian
varchar
Contoh
Ambil kode divisi administratif untuk provinsi yang terkait dengan alamat IPv6.
-
Pernyataan kueri
* | SELECT ipv6Address, ipv6_to_province_code(ipv6Address) AS code WHERE cityCode <> '' -
Hasil kueri: Kolom ipv6Address mencantumkan beberapa alamat IPv6 yang disunting, sedangkan kolom code menunjukkan kode provinsinya:
350000.