89 lines
1.7 KiB
Markdown
89 lines
1.7 KiB
Markdown
# `Table::update` and `Table::remove`
|
|
|
|
Once a `Table` has been created, it can be updated with new data conforming to
|
|
the `Table`'s schema. `Table::update` supports the same data formats as
|
|
`Client::table`, minus _schema_.
|
|
|
|
<div class="javascript">
|
|
|
|
```javascript
|
|
const schema = {
|
|
a: "integer",
|
|
b: "float",
|
|
};
|
|
|
|
const table = await perspective.table(schema);
|
|
table.update(new_data);
|
|
```
|
|
|
|
</div>
|
|
<div class="python">
|
|
|
|
```python
|
|
schema = {"a": "integer", "b": "float"}
|
|
|
|
table = perspective.Table(schema)
|
|
table.update(new_data)
|
|
```
|
|
|
|
</div>
|
|
|
|
Without an `index` set, calls to `update()` _append_ new data to the end of the
|
|
`Table`. Otherwise, Perspective allows
|
|
[_partial updates_ (in-place)](#index-and-limit) using the `index` to determine
|
|
which rows to update:
|
|
|
|
<div class="javascript">
|
|
|
|
```javascript
|
|
indexed_table.update({ id: [1, 4], name: ["x", "y"] });
|
|
```
|
|
|
|
</div>
|
|
<div class="python">
|
|
|
|
```python
|
|
indexed_table.update({"id": [1, 4], "name": ["x", "y"]})
|
|
```
|
|
|
|
</div>
|
|
|
|
Any value on a `Client::table` can be unset using the value `null` in JSON or
|
|
Arrow input formats. Values may be unset on construction, as any `null` in the
|
|
dataset will be treated as an unset value. `Table::update` calls do not need to
|
|
provide _all columns_ in the `Table`'s schema; missing columns will be omitted
|
|
from the `Table`'s updated rows.
|
|
|
|
<div class="javascript">
|
|
|
|
```javascript
|
|
table.update([{ x: 3, y: null }]); // `z` missing
|
|
```
|
|
|
|
</div>
|
|
<div class="python">
|
|
|
|
```python
|
|
table.update([{"x": 3, "y": None}]) # `z` missing
|
|
```
|
|
|
|
</div>
|
|
|
|
Rows can also be removed from an indexed `Table`, by calling `Table::remove`
|
|
with an array of index values:
|
|
|
|
<div class="javascript">
|
|
|
|
```javascript
|
|
indexed_table.remove([1, 4]);
|
|
```
|
|
|
|
</div>
|
|
<div class="python">
|
|
|
|
```python
|
|
indexed_table.remove([1, 4])
|
|
```
|
|
|
|
</div>
|