我正在學習 apache arrow,想要了解更多關於如何建立模式和箭頭記錄的資訊。為此,我引用了一些材料,但到目前為止,所有這些材料都只是使用原始類型來構建如下所示的模式:`
schema := arrow.NewSchema( []arrow.Field{ {Name: "f1-i32", Type: arrow.PrimitiveTypes.Int32}, {Name: "f2-f64", Type: arrow.PrimitiveTypes.Float64}, }, nil, )
我想要使用的 primitivetypes 中不存在一些資料類型。例如,我想使用bool或decimal128。我正在查看 golang 箭頭庫,發現檔案 datatype.go
,其中包含我想要使用的所有可能的資料類型。
但這裡的類型不是建置模式時所需的 datatype
類型。
所以,我有以下三個問題:
datatype.go
中的這些資料類型來建立我的架構? 在datatype.go
中定義的這些資料類型命名常數已用於建立您想要的新類型的一部分。其中一些是type decimal128type struct
和type booleantype struct
如果您檢查這些結構的id
方法的原始程式碼,它們會傳回在datatype.go
中定義的常數,其名稱與結構的名稱相似。這些結構已經實現了 datatype
接口,這意味著您可以將它們分配給 arrow.field.type
因為該字段的類型是 datatype
。
我對他們的意思是:
bool
中定義的常數datatype.go
在datatype_fixedwidth.go
中用作type booleantype struct
# 的id
方法的回傳值。
func (t *booleantype) id() 類型 { return bool }
同樣的事情也適用於 type decimal128type struct
。
func (*decimal128type) id() 型態 { return decimal128 }
.
這些結構之一的方法顯示它們正在實作 datatype
介面:
func (*decimal128type) bitwidth() int func (t *decimal128type) fingerprint() string func (*decimal128type) id() type func (*decimal128type) name() string func (t *decimal128type) string() string
這些方法適用於 type decimal128type struct
。
以及datatype
介面的定義:
type datatype interface { id() type // name is name of the data type. name() string fingerprint() string }
type booleantype struct
也實作了它。
因此,您可以將它們用於 type
欄位:
type field struct { name string // field name type datatype // the field's data type nullable bool // fields can be nullable metadata metadata // the field's metadata, if any }
示範性範例:
package main import ( "fmt" "github.com/apache/arrow/go/arrow" ) func main() { booltype := &arrow.booleantype{} decimal128type := &arrow.decimal128type{precision: 1, scale: 1} schema := arrow.newschema( []arrow.field{ {name: "f1-bool", type: booltype}, {name: "f2-decimal128", type: decimal128type}, }, nil, ) fmt.println(schema) }
輸出:
schema: fields: 2 - f1-bool: type=bool - f2-decimal128: type=decimal(1, 1)
您可以在 文件。
還有一些與擴充類型相關的東西。
但我不熟悉擴充類型,因此我無法展示它的範例。但如果你熟悉它,你就可以輕鬆解決它。
以上是使用golang apache arrow實作的datatype.go中指定的資料類型來建構模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!