Access table metadata
This guide will show you how to use methods from Deephaven's Table
class to access the metadata for your table.
A table's metadata provides basic information about its source data, such as the table type and size, whether the data is refreshing, and the data types of each column. You may want to confirm if a column is an int
or a double
, or check whether a column is a partitioning column or grouping column.
meta_table
The meta_table
attribute creates a new table that contains the table's meta data. Specifically, this table contains information about every column in the original table.
result = source.meta_table
This can be useful when you want to confirm which columns in a table are partitioning or grouping, or verify the data type of a column.
Let's create a table of weather data for Miami, Florida.
from deephaven import new_table
from deephaven.column import string_col, int_col, double_col
miami = new_table(
[
string_col(
"Month",
[
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
],
),
int_col("Temp", [60, 62, 65, 68, 73, 76, 77, 77, 76, 74, 68, 63]),
double_col(
"Rain",
[1.62, 2.25, 3.00, 3.14, 5.34, 9.67, 6.50, 8.88, 9.86, 6.33, 3.27, 2.04],
),
]
)
- miami
We can access the meta data as follows:
meta = miami.meta_table
- meta
Obviously, this is more useful for a table we are unfamiliar with, but as you can see, the meta
table provides information about the column and data types.
Now, let's create a table of weather data for Miami over three dates in January, then averages the high and low temperatures by day.
from deephaven import new_table
from deephaven.column import string_col, int_col
miami = new_table(
[
string_col("Day", ["Jan 1", "Jan 1", "Jan 2", "Jan 2", "Jan 3", "Jan 3"]),
int_col("Temp", [45, 62, 48, 63, 39, 59]),
]
)
avg_temp = miami.avg_by(by=["Day"])
- miami
- avg_temp
Although the Temp
column is originally created as an int column, the Temp
column in the avg_by
table becomes a double column. We can see this by hovering over the column header in the UI, and also by accessing the table's metadata.
meta = avg_temp.meta_table
- meta
attributes
The attributes
method returns all of a Table's defined attributes.
print(miami.attributes())
- Log
has_columns
Use has_columns
to check whether a table contains a column (or columns) with the provided column name(s). It will return True
if all columns are in the table, or False
if any of the provided column names are not found in the table.
print(miami.has_columns("Month"))
print(miami.has_columns(["Month", "NotAColumnName"]))
- Log
to_string
Use to_string
return the first n rows of a table as a pipe-delimited string.
source.to_string(
num_rows: int = 10,
cols: Union[str, Sequence[str]] = None
) -> str
num_rows
is the number of rows from the beginning of the table to return. The default is 10.cols
is the column name(s) to include in the string. The default isNone
, which includes all columns.
print(miami.to_string(4))
- Log
table_diff
Use table_diff
to compare two tables and return the differences between them as a string.
from deephaven import empty_table
from deephaven.table import table_diff
## Create some tables
t1 = empty_table(10).update(["A = i", "B = i", "C = i"])
t2 = empty_table(10).update(
["A = i", "C = i % 2 == 0? i: i + 1", "C = i % 2 == 0? i + 1: i"]
)
## get the diff string
d = table_diff(t1, t2, max_diffs=10).split("\n")
print(d)
Attributes
The following attributes do not take arguments, but will print metadata information in the console.
columns
For a full list of a Table's column definitions, use columns
:
print(miami.columns)
- Log
is_blink
To see whether or not a Table is a blink table, use is_blink
:
print(miami.is_blink)
- Log
is_flat
To see whether or not a Table is flat, use is_flat
:
print(miami.is_flat)
- Log
is_refreshing
To see whether or not a Table is refreshing, use is_refreshing
:
print(miami.is_refreshing)
- Log
size
To see the number of rows in a Table, use size
:
print(miami.size)
- Log
update_graph
To get the source Table's update graph, use update_graph
:
print(miami.update_graph)
- Log