首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决atoti异常:"AtotiJavaException:无法使数组类型为非空“?

如何解决atoti异常:"AtotiJavaException:无法使数组类型为非空“?
EN

Stack Overflow用户
提问于 2022-08-17 17:35:39
回答 1查看 29关注 0票数 0

我试图使用标准方法在atoti中生成一个表:

代码语言:javascript
复制
table = session.read_pandas( DF, keys = ["col1",...."coln"], table_name = "My_Table")

但是,它会抛出与读取一个列有关的错误,该列由numpy数组组成,其中数组中的值是浮动的。

完整的错误如下:

AtotiJavaException:无法使数组类型为非空。字段类型: FieldType(dataType=156032 -> Nullable double[],dataClass=class [D,defaultValueHolder=MultiTypeCell{codec=NULL,value=null})

EN

回答 1

Stack Overflow用户

发布于 2022-08-17 18:24:35

不是100%确定,因为您的代码是不完整的,但是您可能会得到这个错误,因为您试图将数组列添加到表的键中。

然而:

  • 数组列总是可空的
  • 表键不能为空

注意:从atoti 0.7.0开始,列被认为是空的当且仅当column.default_value is None

例如,这起作用是:

代码语言:javascript
复制
import atoti as tt
import numpy as np
import pandas as pd

df = pd.DataFrame(
    columns=["id", "scalar", "array"],
    data=[
        ("abc", 1.0, np.array([1.0, 2.0])),
        ("def", 2.0, np.array([2.0, 3.0])),
    ],
)
session = tt.Session()
table = session.read_pandas(
    df,
    table_name="example",
    keys=["id"],
)

data_types = {name: table[name].data_type for name in table.columns}
assert data_types == {
    "id": "String",
    "scalar": "double",
    "array": "double[]",
}

rows = table.head()
pd.testing.assert_frame_equal(
    rows,
    pd.DataFrame(
        columns=["scalar", "array"],
        data=[
            (1.0, [1.0, 2.0]),
            (2.0, [2.0, 3.0]),
        ],
        index=pd.Index(["abc", "def"], name="id"),
    ),
)

但是将keys=["id"]替换为keys=["id", "array"]将导致Cannot make an array type non nullable错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73392734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档