全部產品
Search
文件中心

Simple Log Service:IP函數

更新時間:Jun 30, 2024

本文介紹IP函數的基本文法及樣本。

Log Service支援如下IP函數。

重要

在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status"status"表示日誌欄位status。

函數類型

函數名稱

文法

說明

支援SQL

支援SPL

IPv4地址函數

ip_to_city函數

ip_to_city(x)

分析目標IPv4地址所屬城市。

返回結果為城市的中文名稱。

×

ip_to_city(x, 'en')

分析目標IPv4地址所屬城市。

返回結果為城市的行政區劃代碼。

×

ip_to_city_geo函數

ip_to_city_geo(x)

分析目標IPv4地址所屬城市的經緯度。此函數返回的是城市經緯度,每個城市只有一個經緯度。

×

ip_to_country函數

ip_to_country(x)

分析目標IPv4地址所屬國家或地區。

返回結果為國家或地區的中文名稱。

×

ip_to_country(x, 'en')

分析目標IPv4地址所屬國家或地區。

返回結果為國家或地區的代碼。

×

ip_to_country_code函數

ip_to_country_code(x)

分析目標IPv4地址所屬國家或地區。

返回結果為國家或地區的代碼。

×

ip_to_domain函數

ip_to_domain(x)

判斷目標IPv4地址是內網地址還是外網地址。

×

ip_to_geo函數

ip_to_geo(x)

分析目標IPv4地址所在位置的經緯度。

×

ip_to_provider函數

ip_to_provider(x)

分析目標IPv4地址所對應的網路電訊廠商。

×

ip_to_province函數

ip_to_province(x)

分析目標IPv4地址所屬

返回結果為的中文名稱。

×

ip_to_province(x, 'en')

分析目標IPv4地址所屬

返回結果為的行政區劃代碼。

×

IPv4網段函數

ip_prefix函數

ip_prefix(x, prefix_bits)

擷取目標IPv4地址的首碼。

×

is_prefix_subnet_of函數

is_prefix_subnet_of(x, y)

判斷目標IPv4網段是否為某網段的子網。

×

is_subnet_of函數

is_subnet_of(x, y)

判斷目標IPv4地址是否在某網段內。

×

ip_subnet_max函數

ip_subnet_max(x)

擷取IPv4網段中的最大IP地址。

×

ip_subnet_min函數

ip_subnet_min(x)

擷取IPv4網段中的最小IP地址。

×

ip_subnet_range函數

ip_subnet_range(x)

擷取IPv4網段範圍。

×

IPv6地址函數

ipv6_to_city函數

ipv6_to_city(x)

分析目標IPv6地址所屬城市的名稱。

×

ipv6_to_city_code函數

ipv6_to_city_code(x)

分析目標IPv6地址所屬城市的行政區劃代碼。

×

ipv6_to_city_geo函數

ipv6_to_city_geo(x)

分析目標IPv6地址所屬城市的經緯度。

×

ipv6_to_country函數

ipv6_to_country(x)

分析目標IPv6地址所屬國家或地區。

×

ipv6_to_country_code函數

ipv6_to_country_code(x)

分析目標IPv6地址所屬國家或地區的代碼。

×

ipv6_to_domain函數

ipv6_to_domain(x)

判斷目標IPv6地址是內網地址還是外網地址。

×

ipv6_to_provider函數

ipv6_to_provider(x)

分析目標IPv6地址所對應的網路電訊廠商。

×

ipv6_to_province函數

ipv6_to_province(x)

分析目標IPv6地址所屬省份。

×

ipv6_to_province_code函數

ipv6_to_province_code(x)

分析目標IPv6地址所屬省份的行政區劃代碼。

×

ip_to_city函數

ip_to_city函數用於分析目標IPv4地址所屬城市。

文法

  • 返回城市的中文名稱。

    ip_to_city(x)
  • 返回城市的行政區劃代碼。

    ip_to_city(x,'en')

參數說明

參數

說明

x

參數值為IPv4地址。

傳回值類型

varchar類型。

樣本

統計來自不同城市的請求的平均時間、最大時間以及最大時間對應的請求ID。

  • 查詢和分析語句

    * |
    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
  • 查詢和分析結果ip_to_city

ip_to_city_geo函數

ip_to_city_geo函數用於分析目標IPv4地址所屬城市的經緯度。此函數返回的是城市經緯度,每個城市只有一個經緯度。

文法

ip_to_city_geo(x)

參數說明

參數

說明

x

參數值為IPv4地址。

傳回值類型

varchar類型,格式為緯度,經度

樣本

統計IPv4地址的經緯度,確認用戶端分布情況。

  • 查詢和分析語句

    * |
    SELECT
      count(*) AS PV,
      ip_to_city_geo(client_ip) AS geo
    GROUP BY
      geo
    ORDER BY
      PV DESC
  • 查詢和分析結果ip_to_city_geo

ip_to_country函數

ip_to_country函數用於分析目標IPv4地址所屬國家或地區。

文法

  • 返回國家或地區的中文名稱。

    ip_to_country(x)
  • 返回國家或地區的代碼。

    ip_to_country(x,'en')

參數說明

參數

說明

x

參數值為IPv4地址。

傳回值類型

varchar類型。

樣本

統計來自不同國家或地區的請求的平均時間、最大時間以及最大時間對應的請求ID。

  • 查詢和分析語句

    * |
    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
  • 查詢和分析結果延時情況

ip_to_country_code函數

ip_to_country_code函數用於分析目標IPv4地址所屬國家或地區,返回國家或地區的代碼。

文法

ip_to_country_code(x)

參數說明

參數

說明

x

參數值為IPv4地址。

傳回值類型

varchar類型。

樣本

統計來自不同國家或地區的請求的平均時間、最大時間以及最大時間對應的請求ID。

  • 查詢和分析語句

    * |
    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
  • 查詢和分析結果ip_to_country_code

ip_to_domain函數

ip_to_domain函數用於判斷目標IPv4地址是內網地址還是外網地址。

文法

ip_to_domain(x)

參數說明

參數

說明

x

參數值為IPv4地址。

傳回值類型

varchar類型,返回intranet或internet。

  • intranet表示內網。

  • internet表示外網。

樣本

統計不是來自內網的請求總數。

  • 查詢和分析語句

    * |
    SELECT
      count(*) AS PV
    where
      ip_to_domain(client_ip) != 'intranet'
  • 查詢和分析結果不來自內網的請求

ip_to_geo函數

ip_to_geo函數用於分析目標IPv4地址所在位置的經緯度。關於geohash函數的詳細資料,請參見地理函數

文法

ip_to_geo(x)

參數說明

參數

說明

x

參數值為IPv4地址。

傳回值類型

varchar類型,格式為緯度,經度

樣本

統計IPv4地址的經緯度,確認用戶端分布情況。

  • 查詢和分析語句

    * |
    SELECT
      count(*) AS PV,
      ip_to_geo(client_ip) AS geo
    GROUP BY
      geo
    ORDER BY
      PV DESC
  • 查詢和分析結果用戶端分布

ip_to_provider函數

ip_to_provider函數用於分析目標IPv4地址對應的網路電訊廠商。

文法

ip_to_provider(x)

參數說明

參數

說明

x

參數值為IPv4地址。

傳回值類型

varchar類型。

樣本

統計通過不同網路電訊廠商發起的請求的平均請求時間。

  • 查詢和分析語句

    * |
    SELECT
      avg(request_time) AS avg_request_time,
      ip_to_provider(client_ip) AS provider
    GROUP BY
      provider
    ORDER BY
      avg_request_time
  • 查詢和分析結果電訊廠商延時

ip_to_province函數

ip_to_province函數分析目標IPv4地址所屬

文法

  • 返回的中文名稱。

    ip_to_province(x)
  • 返回的行政區劃代碼。

    ip_to_province(x,'en')

參數說明

參數

說明

x

參數值為IPv4地址。

傳回值類型

varchar類型。

樣本

統計請求總數Top10的

  • 查詢和分析語句

    * |
    SELECT
      count(*) as PV,
      ip_to_province(client_ip) AS province
    GROUP BY
      province
    ORDER BY
      PV desc
    LIMIT
      10

    如果上述結果中包含了內網請求,且您希望過濾這部分請求,可參考如下查詢和分析語句。

    * |
    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
  • 查詢和分析結果top10省份

ip_prefix函數

ip_prefix函數用於擷取目標IPv4地址的首碼。返回子網路遮罩格式的IPv4地址,例如192.168.1.0/24。

文法

ip_prefix(x, prefix_bits)

參數說明

參數

說明

x

參數值為IPv4地址。

prefix_bits

首碼位元。

傳回值類型

varchar類型。

樣本

擷取client_ip欄位值的IP地址首碼。

  • 查詢和分析語句

    * | SELECT ip_prefix(client_ip,24) AS client_ip
  • 查詢和分析結果ip_prefix

is_prefix_subnet_of函數

is_prefix_subnet_of函數用於判斷目標網段是否為某網段的子網。

文法

is_prefix_subnet_of(x, y)

參數說明

參數

說明

x

參數值為IPv4網段。y網段是否屬於x網段內。

y

參數值為IPv4網段。

傳回值類型

boolean類型。

樣本

判斷client_ip欄位值所在網段是否屬於192.168.0.1/24網段內。

  • 查詢和分析語句

    * | SELECT is_prefix_subnet_of('192.168.0.1/24',concat(client_ip,'/24'))
  • 查詢和分析結果is_subnet_of

is_subnet_of函數

is_subnet_of函數用於判斷目標IPv4地址是否在某網段內。

文法

is_subnet_of(x, y)

參數說明

參數

說明

x

參數值為IPv4網段。

y

參數值為IPv4地址。

傳回值類型

boolean類型。

樣本

判斷client_ip欄位值是否屬於192.168.0.1/24網段內。

  • 查詢和分析語句

    * | SELECT is_subnet_of('192.168.0.1/24',client_ip)
  • 查詢和分析結果is_subnet_of

ip_subnet_min函數

ip_subnet_min函數用於擷取IPv4網段中的最小IP地址。

文法

ip_subnet_min(x)

參數說明

參數

說明

x

參數值為IPv4網段。

傳回值類型

varchar類型。

樣本

擷取client_ip欄位值所在網段的最小IP地址。

  • 查詢和分析語句

    * | SELECT ip_subnet_min(concat(client_ip,'/24'))
  • 查詢和分析結果ip_subnet_min

ip_subnet_max函數

ip_subnet_max函數用於擷取IPv4網段中最大IP地址。

文法

ip_subnet_max(x)

參數說明

參數

說明

x

參數值為IPv4網段。

傳回值類型

varchar類型。

樣本

擷取client_ip欄位值所在網段的最大IP地址。

  • 查詢和分析語句

    * | SELECT ip_subnet_max(concat(client_ip,'/24'))
  • 查詢和分析結果ip_subnet_max

ip_subnet_range函數

ip_subnet_range用於擷取IPv4網段範圍。

文法

ip_subnet_range(x)

參數說明

參數

說明

x

參數值為IPv4網段。

傳回值類型

JSON類型。

樣本

擷取client_ip欄位值所在網段的範圍。

  • 查詢和分析語句

    * | SELECT ip_subnet_range(concat(client_ip,'/24'))
  • 查詢和分析結果ip_subnet_range

ipv6_to_city函數

ipv6_to_city函數用於分析目標IPv6地址所屬城市的名稱。

文法

ipv6_to_city(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型

樣本

統計不同城市請求的數量。

  • 查詢和分析語句

    * |
    SELECT
      ipv6_to_city(ipv6Address) AS city,
      count(*) AS count
    GROUP BY
      city
  • 查詢和分析結果ipv6_to_city

ipv6_to_city_code函數

ipv6_to_city_code函數用於分析目標IPv6地址所屬城市的行政區劃代碼。

文法

ipv6_to_city_code(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型

樣本

擷取IPv6對應城市的行政區劃代碼。

  • 查詢和分析語句

    * |
    SELECT
      ipv6Address,
      ipv6_to_city_code(ipv6Address) AS cityCode
    WHERE
      cityCode <> ''
  • 查詢和分析結果ipv6_to_city_code

ipv6_to_city_geo函數

ipv6_to_city_geo函數用於分析目標IPv6地址所屬城市的經緯度。

文法

ipv6_to_city_geo(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型,格式為經度,緯度

樣本

統計IPv6地址的經緯度,確認用戶端分布情況。

  • 查詢和分析語句

    * |
    SELECT
      ipv6_to_city_geo(ipv6Address) AS geo,
      count(*) AS PV
    GROUP BY
      geo
    ORDER BY
      PV DESC
  • 查詢和分析結果ipv6_to_city_geo

ipv6_to_country函數

ipv6_to_country函數用於分析目標IPv6地址所屬國家或地區。

文法

ipv6_to_country(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型

樣本

統計請求總數Top10的國家或地區。

  • 查詢和分析語句

    * |
    SELECT
      count(*) AS PV,
      ipv6_to_country(ipv6Address) AS country
    WHERE
      country <> ''
    GROUP BY
      country
    ORDER BY
      PV DESC
    LIMIT
      10
  • 查詢和分析結果ipv6_to_country

ipv6_to_country_code函數

ipv6_to_country_code函數用於分析目標IPv6地址所屬國家或地區的代碼。

文法

ipv6_to_country_code(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型

樣本

擷取IPv6地址所屬國家或地區的代碼。

  • 查詢和分析語句

    * |
    SELECT
      ipv6Address,
      ipv6_to_country_code(ipv6Address) AS code
    WHERE
      cityCode <> ''
  • 查詢和分析結果ipv6_to_country_code

ipv6_to_domain函數

ipv6_to_domain函數用於判斷目標IP地址是內網地址還是外網地址。

文法

ipv6_to_domain(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型,返回intranet或internet。

  • intranet表示內網。

  • internet表示外網。

樣本

統計內外網請求的總數。

  • 查詢和分析語句

    * |
    SELECT
      ipv6_to_domain(ipv6Address) AS domain,
      count(*) AS count
    GROUP BY
      domain
  • 查詢和分析結果ipv6_to_domain

ipv6_to_provider函數

ipv6_to_provider函數用於分析目標IP地址所對應的網路電訊廠商。

文法

ipv6_to_provider(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型

樣本

統計請求總數Top10的網路電訊廠商。

  • 查詢和分析語句

    * |
    SELECT
      ipv6_to_provider(ipv6Address) AS provider,
      count(*) AS count
    GROUP BY
      provider
    ORDER BY
      count DESC
    LIMIT
      10
  • 查詢和分析結果ipv6_to_provider

ipv6_to_province函數

ipv6_to_province函數用於分析目標IPv6地址所屬省份。

文法

ipv6_to_province(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型

樣本

統計請求總數Top10的省份。

  • 查詢和分析語句

    * |
    SELECT
      count(*) AS PV,
      ipv6_to_province(ipv6Address) AS province
    WHERE
      province <> ''
    GROUP BY
      province
    ORDER BY
      PV DESC
    LIMIT
      10
  • 查詢和分析結果ipv6_to_province

ipv6_to_province_code函數

ipv6_to_province_code函數用於分析目標IPv6地址所屬省份的行政區劃代碼。

文法

ipv6_to_province_code(x)

參數說明

參數

說明

x

參數值為IPv6的地址。

傳回值類型

varchar類型

樣本

擷取IPv6地址所屬省份的行政區劃代碼。

  • 查詢和分析語句

    * |
    SELECT
      ipv6Address,
      ipv6_to_province_code(ipv6Address) AS code
    WHERE
      cityCode <> ''
  • 查詢和分析結果ipv6_to_province_code