IPTOINT 函式

計算四個八位元網際網路通訊協定 (IP) 位址的整數值。來源值必須是有效的 IP 位址或 IP 位址的資料欄參照。

IP 位址必須為以下格式:

aaa.bbb.ccc.ddd

其中 aaabbbcccddd 是範圍 0 - 255 (含) 內的整數。

注意:不支援 IPv6 位址。

以下公式用來計算上述 IP 位址對應的整數值:

(aaa * 2563) + (bbb * 2562) + (ccc * 256) + (ddd)

根據計算結果,每個有效的 IP 位址都有一個不重複的對應整數值。

基本用法

數值文字範例:

derive type:single value: IPTOINT('1.2.3.4' ) as:'myAddress'

輸出:產生含有 16909060 整數值的資料欄。

資料欄參照範例:

derive type:single value: IPTOINT(IpAddr) as: 'ip_as_int'

輸出:產生新的 ip_as_int 資料欄,其中包含轉換成整數值的 IpAddr 資料欄值。

語法

derive type:single value: IPTOINT(column_ipaddr)

引數是否必要?資料類型說明
column_ipaddr字串資料欄名稱或字串文字,用以識別要轉換成整數值的 IP 位址

如要進一步瞭解語法標準,請參閱語言文件語法附註一文。

column_ipaddr

值要用來計算對應整數值的資料欄名稱或 IP 位址文字。

  • 如果系統找不到輸入值,則產生的結果也會遺漏該值。
  • 不支援多個資料欄和萬用字元。

使用須知:

是否必要?資料類型示例值
字串文字或資料欄參照 (IP 位址)4.3.2.1

範例

範例 - 將 IP 位址轉換成整數

這個範例會說明如何將 IP 位址轉換成數字值,以用於比較和排序。此範例說明下列函式:

  • IPTOINT - 依據公式,將 IP 位址轉換成整數值。請參閱 IPTOINT 函式一文。
  • IPFROMINT - 依據公式,將整數值轉換回 IP 位址。請參閱 IPFROMINT 函式一文。

來源:

您的資料集包含下列 IP 位址值:

IpAddr
192.0.0.1
10.10.10.10
1.2.3.4
1.2.3
http://12.13.14.15
https://16.17.18.19

轉換:

匯入上述資料時,因為有 http://https:// 通訊協定 ID,因此應用程式一開始會將資料欄的類型設為網址值。請為資料欄選取 IP 位址資料類型。最後三個值會列為不相符的值。您可以套用下列轉換指令,對 http://https:// 字串進行比對,藉此修正最後兩個項目的問題:

replace col:IpAddr with:'' on:`http%?://`

注意:%? Cloud Dataprep 模式會比對任何字元零次或一次,以便比對兩種版本的通訊協定 ID。

現在只有 1.2.3 是不相符的值。或許您知道結尾少了一個 0。如果要把 0 加回去,您可以執行下列指令:

replace col: IpAddr on: `1.2.3{end}` with: '1.2.3.0' global: true

資料欄中的值現在應該全都是有效的 IP 位址資料類型。使用下列指令即可將這些值轉換成對應的整數:

derive type:single value:IPTOINT(IpAddr) as:'ip_as_int'

您現在可以根據這個數字鍵操控資料。如要將整數值轉換回 IP 位址以進行檢查,請使用下列指令:

derive type:single value:IPFROMINT(ip_as_int) as:'ip_check'

結果:

Xip_as_intip_check
192.0.0.13221225473192.0.0.1
10.10.10.1016843009010.10.10.10
1.2.3.4169090601.2.3.4
1.2.3.0169090561.2.3.0
12.13.14.1520218215912.13.14.15
16.17.18.1926955419516.17.18.19

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁