すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:IP 関数

最終更新日:Jun 23, 2026

このトピックでは、IP 関数の基本的な構文と例について説明します。

Simple Log Service は、次の IP 関数をサポートしています。

重要

Log Service の分析文では、文字列をシングルクォーテーション ('') で囲みます。Log Service は、引用符で囲まれていない値やダブルクォーテーション ("") で囲まれた値をフィールド名または列名として解釈します。たとえば、'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 アドレスのインターネットサービスプロバイダー (ISP) を返します。

×

ip_to_province 関数

ip_to_province(x)

指定された IPv4 アドレスのの中国語名を返します。

返される結果は、の中国語名です。

×

ip_to_province(x, 'en')

指定された IPv4 アドレスのの行政区画コードを返します。

結果は、の行政区画コードです。

×

IPv4 CIDR ブロック関数

ip_prefix 関数

ip_prefix(x, prefix_bits)

指定された IPv4 アドレスとプレフィックス長に対応するネットワークプレフィックスを返します。

×

is_prefix_subnet_of 関数

is_prefix_subnet_of(x, y)

ある IPv4 CIDR ブロックが別のブロックのサブネットであるかどうかを判断します。

×

is_subnet_of 関数

is_subnet_of(x, y)

IPv4 アドレスが指定された IPv4 CIDR ブロック内にあるかどうかを確認します。

×

ip_subnet_max 関数

ip_subnet_max(x)

指定された IPv4 CIDR ブロック内の最大の IP アドレスを返します。

×

ip_subnet_min 関数

ip_subnet_min(x)

指定された IPv4 CIDR ブロック内の最小の IP アドレスを返します。

×

ip_subnet_range 関数

ip_subnet_range(x)

指定された IPv4 CIDR ブロックの IP アドレス範囲を返します。

×

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 アドレスのインターネットサービスプロバイダー (ISP) を返します。

×

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
  • クエリは 3 つのレコードを返します:天津 (avg_request_time: 44.85, max_request_time: 80.0, requestId: i-02)、麗江 (avg_request_time: 46.47, max_request_time: 80.0, requestId: i-01)、鶴崗 (avg_request_time: 43.87, max_request_time: 80.0, requestId: i-01)。

ip_to_city_geo 関数

ip_to_city_geo 関数は、指定された IPv4 アドレスの都市の経度と緯度を返します。

構文

ip_to_city_geo(x)

パラメーター

パラメーター

説明

x

IPv4 アドレス。

戻り値の型

latitude,longitude 形式の varchar 文字列。

IPv4 アドレスの経度と緯度を取得して、クライアントのディストリビューションをマッピングします。

  • クエリ文

    * |
    SELECT
      count(*) AS PV,
      ip_to_city_geo(client_ip) AS geo
    GROUP BY
      geo
    ORDER BY
      PV DESC
  • クエリは 2 つの行を返します。最初の行の PV は 9113 で、geo の値は 39.9288,116.389 (北京) です。2 番目の行の PV は 5784 で、geo の値は 31.2222,121.458060 (上海) です。

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
  • クエリと分析の結果は 3 つのレコードを示します:香港 (中国) (avg_request_time: 45.27, max_request_time: 80.0, requestId: i-02)、オーストラリア (avg_request_time: 47.08, max_request_time: 80.0, requestId: i-01)、インド (avg_request_time: 39.39, max_request_time: 77.0, requestId: i-01)。

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
  • クエリは 2 行の結果を返します。最初の行では、avg_request_time は 45.012、max_request_time は 80.0、requestId は i-01、country は MO です。2 番目の行では、avg_request_time は 46.286、max_request_time は 77.0、requestId は i-02、country は GB です。

ip_to_domain 関数

ip_to_domain 関数は、IPv4 アドレスがプライベートアドレスかパブリックアドレスかを判断します。

構文

ip_to_domain(x)

パラメーター

パラメーター

説明

x

IPv4 アドレス。

戻り値の型

次のいずれかの値を持つ varchar 文字列を返します:

  • 'intranet':プライベートアドレスを示します。

  • 'internet':パブリックアドレスを示します。

プライベートネットワークから発信されていないリクエストの数をカウントします。

  • クエリ文

    * |
    SELECT
      count(*) AS PV
    where
      ip_to_domain(client_ip) != 'intranet'
  • クエリと分析の結果:PV のカウントは 941786 です。

ip_to_geo 関数

ip_to_geo 関数は、指定された IPv4 アドレスの緯度と経度を返します。geo 関数の詳細については、「Geo 関数」をご参照ください。

構文

ip_to_geo(x)

パラメーター

パラメーター

説明

x

IPv4 アドレス。

戻り値の型

latitude,longitude 形式の varchar 文字列。

この例では、IPv4 アドレスの緯度と経度を取得して、クライアントのディストリビューションを特定します。

  • クエリ文

    * |
    SELECT
      count(*) AS PV,
      ip_to_geo(client_ip) AS geo
    GROUP BY
      geo
    ORDER BY
      PV DESC
  • クエリと分析の結果には、2 つのサンプルレコードが含まれています:1 つは PV が 5122 で geo が 39.1423,117.173、もう 1 つは PV が 4960 で geo が 29.5569,106.553 です。

ip_to_provider 関数

ip_to_provider 関数は、IPv4 アドレスの ISP を返します。

構文

ip_to_provider(x)

パラメーター

パラメーター

説明

x

IPv4 アドレス。

戻り値の型

varchar 文字列。

ISP ごとの平均リクエスト時間を計算します。

  • クエリ文

    * |
    SELECT
      avg(request_time) AS avg_request_time,
      ip_to_provider(client_ip) AS provider
    GROUP BY
      provider
    ORDER BY
      avg_request_time
  • クエリは 3 行を返します。avg_request_time の値は 18.0、25.0、26.0 で、対応する provider の値は Reliance Communications、CAT、Wangsu です。

ip_to_province 関数

ip_to_province 関数は、指定された IPv4 アドレスのを返します。

構文

  • の中国語名を返します。

    ip_to_province(x)
  • の英語名を返します。

    ip_to_province(x,'en')

パラメーター

パラメーター

説明

x

検索する IPv4 アドレス。

戻り値の型

VARCHAR

合計リクエスト数で上位 10 のを計算します。

  • クエリ文

    * |
    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
  • クエリ結果:最初のクエリ文を実行すると、PV 列と province 列を持つテーブルが返されます。結果は PV の降順でソートされます。サンプル結果では、広東省が PV 368 で 1 位です。IP アドレスを省に解決できない場合、province 列の値は空になります。

ip_prefix 関数

ip_prefix 関数は、192.168.1.0/24 のような CIDR 表記で、指定された IPv4 アドレスのサブネットプレフィックスを返します。

構文

ip_prefix(x, prefix_bits)

パラメーター

パラメーター

説明

x

IPv4 アドレス。

prefix_bits

プレフィックス長。

戻り値の型

varchar

client_ip フィールドの IP アドレスのサブネットプレフィックスを取得します。

  • クエリ文

    * | SELECT ip_prefix(client_ip,24) AS client_ip
  • クエリは、xx.xx.xx.0/24 のような /24 サブネットプレフィックスを含む client_ip 列を返します。

is_prefix_subnet_of

is_prefix_subnet_of は、ある IPv4 CIDR ブロックが別のブロックのサブネットであるかどうかを確認します。

構文

is_prefix_subnet_of(x, y)

パラメーター

パラメーター

説明

x

親の IPv4 CIDR ブロック。

y

潜在的なサブネットとしてテストする IPv4 CIDR ブロック。

戻り値の型

y が x のサブネットである場合は true、そうでない場合は false のブール値を返します。

この例では、client_ip フィールドから派生した CIDR ブロックが 192.168.0.1/24 のサブネットであるかどうかを確認します。

  • クエリ文

    * | SELECT is_prefix_subnet_of('192.168.0.1/24',concat(client_ip,'/24'))
  • クエリと分析の結果には、_col0 列が含まれ、2 つの行があり、どちらも値は false です。false の値は、対応するログの client_ip が 192.168.0.1/24 サブネットにないことを示します。

is_subnet_of 関数

is_subnet_of 関数は、IPv4 アドレスが CIDR ブロック内にあるかどうかを判断します。

構文

is_subnet_of(x, y)

パラメーター

パラメーター

説明

x

IPv4 CIDR ブロック。

y

IPv4 アドレス。

戻り値の型

Boolean

client_ip フィールドの値が 192.168.0.1/24 CIDR ブロック内にあるかどうかを確認します。

  • クエリ文

    * | SELECT is_subnet_of('192.168.0.1/24',client_ip)

ip_subnet_min 関数

ip_subnet_min 関数は、IPv4 CIDR ブロック内の最小の IP アドレスを返します。

構文

ip_subnet_min(x)

パラメーター

パラメーター

説明

x

IPv4 CIDR ブロック。

戻り値の型

varchar

この例では、client_ip フィールドの IP アドレスを含む CIDR ブロック内の最小の IP アドレスを返します。

  • クエリ文

    * | SELECT ip_subnet_min(concat(client_ip,'/24'))
  • クエリは、_col0 という名前の列を持つ単一の行を返します。この列には、client_ip を含む /24 CIDR ブロック内の最小の IP アドレスが表示されます。一部のコンテンツはマスクされています。

ip_subnet_max 関数

ip_subnet_max 関数は、IPv4 CIDR ブロック内の最大の IP アドレスを返します。

構文

ip_subnet_max(x)

パラメーター

パラメーター

説明

x

IPv4 CIDR ブロック。

戻り値の型

varchar

client_ip フィールドの IP アドレスの /24 サブネットの最大の IP アドレスを計算します。

  • クエリと分析文

    * | SELECT ip_subnet_max(concat(client_ip,'/24'))
  • _col0 列には、ip_subnet_max 関数の結果が表示されます:/24 サブネットの最大の IP アドレスです。一部のコンテンツはマスクされています。

ip_subnet_range

ip_subnet_range 関数は、IPv4 CIDR ブロックの開始アドレスと終了アドレスを返します。

構文

ip_subnet_range(x)

パラメーター

パラメーター

説明

x

IPv4 CIDR ブロック。

戻り値の型

JSON 配列。

client_ip フィールドの IP アドレスを含む IPv4 CIDR ブロックのアドレス範囲を取得します。

  • クエリと分析文

    * | SELECT ip_subnet_range(concat(client_ip,'/24'))
  • クエリと分析の結果には、_col0 列が含まれます。この列には、["xxx.xxx.xxx.0","xxx.xxx.xxx.255"] のような JSON 配列が含まれており、これは IPv4 CIDR ブロックの開始アドレスと終了アドレスを表します。

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
  • クエリと分析の結果は、各都市とそのレコード数をリストします。例:安陽 (18)、保定 (42)、宝山 (3)、浜州 (9)。

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 アドレスを変換し、350100 の cityCode を返します。

ipv6_to_city_geo

ipv6_to_city_geo 関数は、IPv6 アドレス経度と緯度を返します。

構文

ipv6_to_city_geo(x)

パラメーター

パラメーター

説明

x

IPv6 アドレス

戻り値の型

この関数は、longitude,latitude 形式の varchar 文字列を返します。

この例では、クライアントのディストリビューションを分析するために、IPv6 アドレス経度と緯度を取得する方法を示します。

  • クエリ文

    * |
    SELECT
      ipv6_to_city_geo(ipv6Address) AS geo,
      count(*) AS PV
    GROUP BY
      geo
    ORDER BY
      PV DESC
  • クエリは geoPV の列を返します。サンプル結果は (geo, PV) のペアで表示され、(133.397995,-24.9121, 6270)、(10.45415,51.164181, 3813)、(-2.23001,54.314072, 2055)、(121.5654268,25.0329636, 1893) が含まれます。

ipv6_to_country 関数

ipv6_to_country 関数は、指定された IPv6 アドレスの国または地域を特定します。

構文

ipv6_to_country(x)

パラメーター

パラメーター

説明

x

IPv6 アドレス。

戻り値の型

varchar

合計リクエスト数で上位 10 の国または地域を計算します。

  • クエリ文

    * |
    SELECT
      count(*) AS PV,
      ipv6_to_country(ipv6Address) AS country
    WHERE
      country <> ''
    GROUP BY
      country
    ORDER BY
      PV DESC
    LIMIT
      10
  • クエリと分析の結果:クエリは 10 件のレコードを返します。例:ドイツ (3813)、台湾 (2337)、イギリス (2055)、スウェーデン (1119)、オランダ (1014)、アメリカ合衆国 (942)、ロシア (930)、マレーシア (867) など。

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 アドレスをその国コードに解決します。たとえば、中国のアドレスの場合は CN です。

ipv6_to_domain 関数

ipv6_to_domain 関数は、IPv6 アドレスをプライベートアドレスまたはパブリックアドレスに分類します。

構文

ipv6_to_domain(x)

パラメーター

パラメーター

説明

x

IPv6 アドレス。

戻り値の型

varchar。この関数は、次のいずれかの値を返します:

  • intranet:プライベートアドレス。

  • internet:パブリックアドレス。

この例では、プライベートネットワークとパブリックネットワークからのリクエストをカウントします。

  • クエリと分析文

    * |
    SELECT
      ipv6_to_domain(ipv6Address) AS domain,
      count(*) AS count
    GROUP BY
      domain
  • クエリは、domaincount の 2 つの列を持つテーブルを返します。この例では、intranet のカウントは 9、internet のカウントは 38,067 です。

ipv6_to_provider 関数

ipv6_to_provider 関数は、指定された IPv6 アドレスの ISP を返します。

構文

ipv6_to_provider(x)

パラメーター

パラメーター

説明

x

IPv6 アドレス。

戻り値の型

varchar

この例では、合計リクエスト数で上位 10 の ISP を検索します。

  • クエリと分析文

    * |
    SELECT
      ipv6_to_provider(ipv6Address) AS provider,
      count(*) AS count
    GROUP BY
      provider
    ORDER BY
      count DESC
    LIMIT
      10
  • クエリと分析の結果:クエリは、リクエスト数の降順でソートされた ISP のリストを返します。上位 10 件の結果には、edu.tw (2235)、colt.net (1512)、maxis.com.my (780)、citictel-cpc.com (453)、CSTNET (348)、ntt.com (261)、att.com (258)、libertyglobal.com (174) などが含まれます。

ipv6_to_province 関数

ipv6_to_province 関数は、IPv6 アドレスの省を返します。

構文

ipv6_to_province(x)

パラメーター

パラメーター

説明

x

IPv6 アドレス。

戻り値の型

varchar

この例では、合計リクエスト数で上位 10 の省を検索します。

  • クエリと分析文

    * |
    SELECT
      count(*) AS PV,
      ipv6_to_province(ipv6Address) AS province
    WHERE
      province <> ''
    GROUP BY
      province
    ORDER BY
      PV DESC
    LIMIT
      10
  • クエリと分析の結果:クエリは PVprovince の列を返し、PV の降順でソートされます。サンプル結果には、江蘇省 (564)、広東省 (558)、クアラルンプール連邦直轄領 (555)、山東省 (507)、河南省 (435)、四川省 (354)、浙江省 (336)、安徽省 (312) が含まれます。

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 <> ''
  • クエリ結果:ipv6Address 列には、マスクされたいくつかの IPv6 アドレスがリストされ、code 列には、対応する省コード 350000 が表示されます。