このトピックでは、IP 関数の構文について説明します。 また、関数の使用方法の例も示します。
次の表に、Simple Log Service でサポートされている IP 関数を示します。
分析文で文字列を使用する場合は、文字列を単一引用符 ('') で囲む必要があります。 囲まれていない文字列、または二重引用符 ("") で囲まれた文字列は、フィールド名または列名を示します。 たとえば、'status' は status 文字列を示し、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) | IPv4 アドレスが属する州を識別します。 この関数は、州の中国語名を返します。 | √ | × | ||
ip_to_province(x, 'en') | IPv4 アドレスが属する州を識別します。 この関数は、州の行政区画コードを返します。 | √ | × | ||
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, // 最大リクエスト時間に対応するリクエストIDを取得 ip_to_city(client_ip) AS city // クライアントIPから都市を取得 GROUP BY city // 都市ごとにグループ化クエリと分析結果

ip_to_city_geo 関数
ip_to_city_geo 関数は、IPv4 アドレスが属する都市の経度と緯度を特定します。この関数は都市の経度と緯度を返します。各都市には1つの座標セットしかありません。
手順
ip_to_city_geo(x)ip_to_city 関数
パラメーター | 説明 |
x | このパラメーターの値は IPv4 アドレスです。 |
戻り値の型
varchar 型。形式: latitude,longitude です。
例
IPv4 アドレスの経度と緯度、およびクライアントの分布を取得します。
クエリ ステートメント
* | SELECT count(*) AS PV, // PV としてカウント ip_to_city_geo(client_ip) AS geo // クライアント IP から地理情報を取得し、geo として設定 GROUP BY geo // geo でグループ化 ORDER BY PV DESC // PV の降順でソートクエリと分析結果

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, // 最大リクエスト時間に対応するリクエストIDを取得 ip_to_country(client_ip) AS country // クライアントIPから国を取得 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, // 最大リクエスト時間に対応するリクエストIDを取得する ip_to_country_code(client_ip) AS country // クライアントIPから国コードを取得する GROUP BY country // 国コードでグループ化するクエリと分析結果

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 型。 フォーマット:latitude,longitude。
例
IPv4 アドレスの経度と緯度、およびクライアントの分布を取得します。
クエリ文
* | SELECT count(*) AS PV, // PV としてカウント ip_to_geo(client_ip) AS geo // client_ip から地理位置情報を取得 GROUP BY geo ORDER BY PV DESC // PV の降順でソートクエリと分析結果

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 アドレスが属する州を識別します。
構文
次の構文を使用すると、関数は州の中国語名を返します。
ip_to_province(x)次の構文を使用すると、関数は州の英語名を返します。
ip_to_province(x,'en')
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は IPv4 アドレスです。 |
戻り値の型
varchar 型。
例
リクエストの総数に基づいて上位 10 件の州を取得します。
クエリ文
* | SELECT count(*) as PV, // PV としてカウント ip_to_province(client_ip) AS province // client_ip から省份を取得 GROUP BY province // 省份でグループ化 ORDER BY PV desc // PV で降順にソート LIMIT 10 // 上位10件に制限上位 10 件の州を取得する際に、内部ネットワークから送信されたリクエストを除外する場合は、次のクエリ文を使用します。
* | SELECT count(*) AS PV, // PV としてカウント ip_to_province(client_ip) AS province // client_ip から省份を取得 WHERE ip_to_domain(client_ip) != 'intranet' //イントラネットからのリクエストを除外 GROUP BY province // 省份でグループ化 ORDER BY PV DESC // PV で降順にソート LIMIT 10 // 上位10件に制限クエリと分析結果

WordPress を構成する
ip_prefix 関数は、IPv4 アドレスのプレフィックスを返します。この関数は、サブネットマスク形式の IPv4 アドレスを返します。例:192.168.1.0/24。
構文
ip_prefix(x, prefix_bits)ip_to_city_geo 関数
パラメーター | 説明 |
x | このパラメーターの値は IPv4 アドレスです。 |
prefix_bits | このパラメーターは、プレフィックスの長さを指定します。 |
戻り値の型
varchar 型。
例
client_ip フィールドの値にある IPv4 アドレスのプレフィックスを取得します。
問題が発生した場合は、「トラブルシューティング ガイド」をご確認ください。
* | SELECT ip_prefix(client_ip,24) AS client_ip // クライアント IP の最初の 24 ビットを取得クエリと分析結果

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 アドレスが属する都市を特定します。
構文
ipv6_to_city(x)ip_to_country 関数
パラメーター | 説明 |
x | このパラメーターの値は IPv6 アドレスです。 |
戻り値の型
varchar型
例
異なる都市から送信されたリクエスト数を取得してください。
クエリステートメント
* | SELECT ipv6_to_city(ipv6Address) AS city, // city として ipv6Address から都市を取得 count(*) AS count // 件数をカウント GROUP BY city // city でグループ化クエリと分析結果

ipv6_to_city_code 関数
ipv6_to_city_code 関数は、IPv6 アドレスが属する都市の行政区画コードを識別します。
構文
ipv6_to_city_code(x)パラメーター
パラメーター | 説明 |
x | このパラメーターの値は IPv6 アドレスです。 |
戻り値の型
varchar 型。
例
IPv6 アドレスが属する都市の行政区画コードを取得します。
クエリ文
* | SELECT ipv6Address, // IPv6アドレス 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 型。形式: longitude,latitude。
例
IPv6 アドレスの経度と緯度、およびクライアントの分布を取得します。
クエリ文
* | // 全てのデータ SELECT ipv6_to_city_geo(ipv6Address) AS geo, // IPv6 アドレスから地理位置情報を取得し、geo 列に格納 count(*) AS PV // 各地理位置情報ごとの数をカウントし、PV 列に格納 GROUP BY geo // geo 列でグループ化 ORDER BY PV DESC // PV 列の降順でソートクエリと分析結果

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 型。関数は intranet または internet のみ返すことができます。
intranet:プライベートアドレス。
internet:パブリックアドレス。
例
内部ネットワークとインターネットを介して送信されるリクエストの総数を取得します。
クエリ文
* | 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, // provider として ipv6_to_provider(ipv6Address) を選択 count(*) AS count // count としてカウント GROUP BY provider // provider でグループ化 ORDER BY count DESC // count の降順でソート LIMIT 10 // 上位 10 件に制限クエリと分析結果

ipv6_to_province 関数
ipv6_to_province 関数は、IPv6 アドレスが属する省を識別します。
構文
ipv6_to_province(x)パラメーター
パラメーター | 説明 |
x | このパラメーターの値は IPv6 アドレスです。 |
戻り値の型
varchar 型。
例
リクエストの総数に基づいて上位 10 件の省を取得します。
クエリ文
* | SELECT count(*) AS PV, // PV としてカウント ipv6_to_province(ipv6Address) AS province // 省として ipv6_to_province(ipv6Address) WHERE province <> '' // 省が空文字列でない GROUP BY province // 省別にグループ化 ORDER BY PV DESC // PV の降順でソート LIMIT 10 // 上位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 <> '' // 空ではない cityCode をフィルタリングクエリと分析結果
