このトピックでは、IP関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。
次の表に、Simple Log ServiceでサポートされているIP機能を示します。
分析ステートメントで文字列を使用する場合は、文字列を単一引用符 ('') で囲む必要があります。 囲まれていない文字列または二重引用符 ("") で囲まれている文字列は、フィールド名または列名を示します。 たとえば、'status' はステータス文字列を示し、statusまたは "status" はステータスログフィールドを示します。
カテゴリ | 関数 | 構文 | 説明 | SQLでサポート | SPLでサポート |
IPv4アドレス関数 | ip_to_city( x) | IPv4アドレスが属する都市を識別します。 この関数は、都市の中国語名を返します。 | √ | × | |
ip_to_city( x, 'en') | IPv4アドレスが属する都市を識別します。 この関数は、都市の行政区画コードを返します。 | √ | × | ||
ip_to_city_geo( x) | IPv4アドレスが属する都市の経度と緯度を識別します。 この関数は、都市の経度と緯度を返します。 各都市には1セットの座標しかありません。 | √ | × | ||
ip_to_country( x) | IPv4アドレスが属する国または地域を識別します。 この関数は、国または地域の中国語名を返します。 | √ | × | ||
ip_to_country( x, 'en') | IPv4アドレスが属する国または地域を識別します。 この関数は、国または地域のコードを返します。 | √ | × | ||
ip_to_country_code( x) | IPv4アドレスが属する国または地域を識別します。 この関数は、国または地域のコードを返します。 | √ | × | ||
ip_to_domain( x) | IPv4アドレスがプライベートアドレスかパブリックアドレスかを確認します。 | √ | × | ||
ip_to_geo( x) | IPv4アドレスの場所の経度と緯度を識別します。 | √ | × | ||
ip_to_provider( x) | IPv4アドレスのインターネットサービスプロバイダー (ISP) を識別します。 | √ | × | ||
ip_to_province( x) | を識別します。Identifies the IPv4アドレスが属する状態。 の中国語名を返します。 stateを実行します。 | √ | × | ||
ip_to_province( x, 'en') | を識別します。Identifies the IPv4アドレスが属する状態。 関数は、の管理部門コードを返します。 stateを実行します。 | √ | × | ||
IPv4 CIDRブロック関数 | ip_prefix( x, prefix_bits) | IPv4アドレスのプレフィックスを返します。 | √ | × | |
is_prefix_subnet_of( x, y) | IPv4 CIDRブロックが指定されたCIDRブロックのサブネットであるかどうかを確認します。 | √ | × | ||
is_subnet_of( x, y) | IPv4アドレスが指定されたCIDRブロックにあるかどうかをチェックします。 | √ | × | ||
ip_subnet_max( x) | IPv4 CIDRブロックの最大のIPアドレスを返します。 | √ | × | ||
ip_subnet_min( x) | IPv4 CIDRブロック内の最小のIPアドレスを返します。 | √ | × | ||
ip_subnet_range( x) | IPv4 CIDRブロックの範囲を返します。 | √ | × | ||
IPv6アドレス関数 | ipv6_to_city( x) | IPv6アドレスが属する都市を識別します。 | √ | × | |
ipv6_to_city_code( x) | IPv6アドレスが属する都市の行政区画コードを識別します。 | √ | × | ||
ipv6_to_city_geo( x) | IPv6アドレスが属する都市の経度と緯度を識別します。 | √ | × | ||
ipv6_to_country( x) | IPv6アドレスが属する国または地域を識別します。 | √ | × | ||
ipv6_to_country_code( x) | IPv6アドレスが属する国または地域のコードを識別します。 | √ | × | ||
ipv6_to_domain( x) | IPv6アドレスがプライベートアドレスかパブリックアドレスかを確認します。 | √ | × | ||
ipv6_to_provider( x) | IPv6アドレスのISPを識別します。 | √ | × | ||
ipv6_to_province( x) | IPv6アドレスが属する州を識別します。 | √ | × | ||
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_geo関数
ip_to_city_geo関数は、IPv4アドレスが属する都市の経度と緯度を識別します。 この関数は、都市の経度と緯度を返します。 各都市には1セットの座標しかありません。
構文
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_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_domain関数
ip_to_domain関数は、IPv4アドレスがプライベートアドレスかパブリックアドレスかをチェックします。
構文
ip_to_domain(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はIPv4アドレスです。 |
戻り値のデータ型
varcharタイプ。 この関数は、イントラネットまたはインターネットのみを返すことができます。
イントラネット: プライベートアドレス。
インターネット: パブリックアドレス。
例
内部ネットワークから送信されていないリクエストの総数を計算します。
クエリ文
* | SELECT count(*) AS PV where ip_to_domain(client_ip) != 'intranet'
クエリと分析結果
ip_to_geo関数
ip_to_geo関数は、IPv4アドレスの場所の経度と緯度を識別します。 geohash関数の詳細については、「Geo関数」をご参照ください。
構文
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アドレスの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
クエリと分析結果
ip_to_province関数
ip_to_provinceは、 IPアドレスが属する状態。
構文
次の構文を使用すると、関数はの中国語名を返します。 stateを実行します。
ip_to_province(x)
次の構文を使用すると、関数はの管理部門コードを返します。 stateを実行します。
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
上位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
クエリと分析結果
ip_prefix関数
ip_prefix関数は、IPv4アドレスのプレフィックスを返します。 この関数は、IPv4アドレスをサブネットマスク形式で返します。 例: 192.168.1.0/24。
構文
ip_prefix(x, prefix_bits)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はIPv4アドレスです。 |
prefix_bits | このパラメータは、プレフィックスの長さを指定します。 |
戻り値のデータ型
varcharタイプ。
例
client_ipフィールドの値でIPv4アドレスのプレフィックスを取得します。
クエリ文
* | SELECT ip_prefix(client_ip,24) AS client_ip
クエリと分析結果
is_prefix_subnet_of関数
is_prefix_subnet_of関数は、IPv4 CIDRブロックが指定されたCIDRブロックのサブネットであるかどうかを確認します。
構文
is_prefix_subnet_of(x, y)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、IPv4 CIDRブロックです。 この関数は、y CIDRブロックがx CIDRブロックのサブネットであるかどうかをチェックします。 |
y | このパラメーターの値は、IPv4 CIDRブロックです。 |
戻り値のデータ型
ブール型。
例
client_ipフィールドの値のIPv4 CIDRブロックが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関数は、IPv4アドレスが指定されたCIDRブロックにあるかどうかをチェックします。
構文
is_subnet_of(x, y)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、IPv4 CIDRブロックです。 |
y | このパラメーターの値はIPv4アドレスです。 |
戻り値のデータ型
ブール型。
例
client_ipフィールドの値のIPv4アドレスが192.168.0.1/24にあるかどうかを確認します。
クエリ文
* | 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アドレスが属するIPv4 CIDRブロック内の最小のipアドレスを取得します。
クエリ文
* | SELECT ip_subnet_min(concat(client_ip,'/24'))
クエリと分析結果
ip_subnet_max関数
ip_subnet_max関数は、IPv4 CIDRブロック内の最大のIPアドレスを返します。
構文
ip_subnet_max(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、IPv4 CIDRブロックです。 |
戻り値のデータ型
varcharタイプ。
例
client_IPフィールドの値のIPアドレスが属するIPv4 CIDRブロックの最大のipアドレスを取得します。
クエリ文
* | SELECT ip_subnet_max(concat(client_ip,'/24'))
クエリと分析結果
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'))
クエリと分析結果
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_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_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_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
クエリと分析結果
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_domain関数
ipv6_to_domain関数は、IPv6アドレスがプライベートアドレスかパブリックアドレスかをチェックします。
構文
ipv6_to_domain(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はIPv6アドレスです。 |
戻り値のデータ型
varcharタイプ。 この関数は、イントラネットまたはインターネットのみを返すことができます。
イントラネット: プライベートアドレス。
インターネット: パブリックアドレス。
例
内部ネットワークとインターネットを介して送信されるリクエストの総数を取得します。
クエリ文
* | SELECT ipv6_to_domain(ipv6Address) AS domain, count(*) AS count GROUP BY domain
クエリと分析結果
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
クエリと分析結果
ipv6_to_province関数
ipv6_to_province関数は、IPv6アドレスが属するprovinceを識別します。
構文
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
クエリと分析結果
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 <> ''
クエリと分析結果