OSS Unity Catalogチュートリアルのウォークスルー

こちらの続きです。

https://qiita.com/taka_yayoi/items/4a9e191e0f85df5ab26b

チュートリアルをウォークスルーします。

https://github.com/unitycatalog/unitycatalog/blob/main/docs/tutorial.md

UCサーバーを起動しておきます。

```sh
bin/start-uc-server
```

# カタログとスキーマの一覧

## カタログの一覧

```sh
bin/uc catalog list
```

```
┌────────────┬───────────────────────────────────┬───────────────────────────────────┬───────────────────────────────────┬───────────────────────────────────┬───────────────────────────────────┐
│    NAME    │              COMMENT              │            PROPERTIES             │            CREATED_AT             │            UPDATED_AT             │                ID                 │
├────────────┼───────────────────────────────────┼───────────────────────────────────┼───────────────────────────────────┼───────────────────────────────────┼───────────────────────────────────┤
│unity       │Main catalog                       │{}                                 │1717996383345                      │null                               │17562adb-e6f8-463e-b82a-22264b06...│
└────────────┴───────────────────────────────────┴───────────────────────────────────┴───────────────────────────────────┴───────────────────────────────────┴───────────────────────────────────┘
```

## スキーマの一覧

```sh
bin/uc schema list --catalog unity
```

```
┌────────────┬─────────────────────────┬─────────────────────────┬─────────────────────────┬─────────────────────────┬─────────────────────────┬─────────────────────────┬─────────────────────────┐
│    NAME    │      CATALOG_NAME       │         COMMENT         │       PROPERTIES        │        FULL_NAME        │       CREATED_AT        │       UPDATED_AT        │        SCHEMA_ID        │
├────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┤
│default     │unity                    │Default schema           │{}                       │unity.default            │1717996383390            │null                     │44abfe3b-d197-4202-9ae...│
└────────────┴─────────────────────────┴─────────────────────────┴─────────────────────────┴─────────────────────────┴─────────────────────────┴─────────────────────────┴─────────────────────────┘
```


# Deltaテーブルの操作

## テーブルの一覧

```sh
bin/uc table list --catalog unity --schema default
```
```
┌────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┐
│    NAME    │  CATALOG_NAME  │  SCHEMA_NAME   │   TABLE_TYPE   │DATA_SOURCE_FORM│    COLUMNS     │STORAGE_LOCATION│    COMMENT     │   PROPERTIES   │   CREATED_AT   │   UPDATED_AT   │    TABLE_ID    │
│            │                │                │                │       AT       │                │                │                │                │                │                │                │
├────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│numbers     │unity           │default         │EXTERNAL        │DELTA           │[{"name":"as_...│file:///Users...│External table  │{"key1":"valu...│1717996383547   │1717996383547   │3fcf3ca8-e0e4...│
├────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│marksheet...│unity           │default         │EXTERNAL        │DELTA           │[{"name":"id"...│file:///tmp/m...│Uniform table   │{"key1":"valu...│1717996383545   │1717996383545   │8619f354-9d3a...│
├────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│marksheet   │unity           │default         │MANAGED         │DELTA           │[{"name":"id"...│file:///Users...│Managed table   │{"key1":"valu...│1717996383535   │1717996383535   │4360b7b4-b606...│
└────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┘
```

オプション`--output jsonPretty`をつけると、すべての情報を表示することができます。

```sh
bin/uc table list --catalog unity --schema default --output jsonPretty
```

```json
[ {
  "name" : "numbers",
  "catalog_name" : "unity",
  "schema_name" : "default",
  "table_type" : "EXTERNAL",
  "data_source_format" : "DELTA",
  "columns" : [ {
    "name" : "as_int",
    "type_text" : "int",
    "type_json" : "{\"name\":\"as_int\",\"type\":\"integer\",\"nullable\":false,\"metadata\":{}}",
    "type_name" : "INT",
    "type_precision" : 0,
    "type_scale" : 0,
    "type_interval_type" : null,
    "position" : 0,
    "comment" : "Int column",
    "nullable" : false,
    "partition_index" : null
  }, {
    "name" : "as_double",
    "type_text" : "double",
    "type_json" : "{\"name\":\"as_double\",\"type\":\"double\",\"nullable\":false,\"metadata\":{}}",
    "type_name" : "DOUBLE",
    "type_precision" : 0,
    "type_scale" : 0,
    "type_interval_type" : null,
    "position" : 1,
    "comment" : "Double column",
    "nullable" : false,
    "partition_index" : null
  } ],
  "storage_location" : "file:///Users/yayoi/UC/unitycatalog/etc/data/external/unity/default/tables/numbers/",
  "comment" : "External table",
  "properties" : {
    "key1" : "value1",
    "key2" : "value2"
  },
  "created_at" : 1717996383547,
  "updated_at" : 1717996383547,
  "table_id" : "3fcf3ca8-e0e4-4587-b28b-9cc50fc30d98"
}, {
  "name" : "marksheet_uniform",
  "catalog_name" : "unity",
  "schema_name" : "default",
  "table_type" : "EXTERNAL",
  "data_source_format" : "DELTA",
  "columns" : [ {
    "name" : "id",
    "type_text" : "int",
    "type_json" : "{\"name\":\"id\",\"type\":\"integer\",\"nullable\":false,\"metadata\":{}}",
    "type_name" : "INT",
    "type_precision" : 0,
    "type_scale" : 0,
    "type_interval_type" : null,
    "position" : 0,
    "comment" : "ID primary key",
    "nullable" : false,
    "partition_index" : null
  }, {
    "name" : "name",
    "type_text" : "string",
    "type_json" : "{\"name\":\"name\",\"type\":\"string\",\"nullable\":false,\"metadata\":{}}",
    "type_name" : "STRING",
    "type_precision" : 0,
    "type_scale" : 0,
    "type_interval_type" : null,
    "position" : 1,
    "comment" : "Name of the entity",
    "nullable" : false,
    "partition_index" : null
  }, {
    "name" : "marks",
    "type_text" : "int",
    "type_json" : "{\"name\":\"marks\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}",
    "type_name" : "INT",
    "type_precision" : 0,
    "type_scale" : 0,
    "type_interval_type" : null,
    "position" : 2,
    "comment" : "Marks of the entity",
    "nullable" : true,
    "partition_index" : null
  } ],
  "storage_location" : "file:///tmp/marksheet_uniform",
  "comment" : "Uniform table",
  "properties" : {
    "key1" : "value1",
    "key2" : "value2"
  },
  "created_at" : 1717996383545,
  "updated_at" : 1717996383545,
  "table_id" : "8619f354-9d3a-4d2e-bef1-fb6829ac80d9"
}, {
  "name" : "marksheet",
  "catalog_name" : "unity",
  "schema_name" : "default",
  "table_type" : "MANAGED",
  "data_source_format" : "DELTA",
  "columns" : [ {
    "name" : "id",
    "type_text" : "int",
    "type_json" : "{\"name\":\"id\",\"type\":\"integer\",\"nullable\":false,\"metadata\":{}}",
    "type_name" : "INT",
    "type_precision" : 0,
    "type_scale" : 0,
    "type_interval_type" : null,
    "position" : 0,
    "comment" : "ID primary key",
    "nullable" : false,
    "partition_index" : null
  }, {
    "name" : "name",
    "type_text" : "string",
    "type_json" : "{\"name\":\"name\",\"type\":\"string\",\"nullable\":false,\"metadata\":{}}",
    "type_name" : "STRING",
    "type_precision" : 0,
    "type_scale" : 0,
    "type_interval_type" : null,
    "position" : 1,
    "comment" : "Name of the entity",
    "nullable" : false,
    "partition_index" : null
  }, {
    "name" : "marks",
    "type_text" : "int",
    "type_json" : "{\"name\":\"marks\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}",
    "type_name" : "INT",
    "type_precision" : 0,
    "type_scale" : 0,
    "type_interval_type" : null,
    "position" : 2,
    "comment" : "Marks of the entity",
    "nullable" : true,
    "partition_index" : null
  } ],
  "storage_location" : "file:///Users/yayoi/UC/unitycatalog/etc/data/managed/unity/default/tables/marksheet/",
  "comment" : "Managed table",
  "properties" : {
    "key1" : "value1",
    "key2" : "value2"
  },
  "created_at" : 1717996383535,
  "updated_at" : 1717996383535,
  "table_id" : "4360b7b4-b606-4b0e-a0e9-bb1484d4101e"
} ]
```

## メタデータの表示

```sh
bin/uc table get --full_name unity.default.numbers
```

```
┌────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
│        KEY         │                                               VALUE                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│NAME                │numbers                                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CATALOG_NAME        │unity                                                                                               │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SCHEMA_NAME         │default                                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│TABLE_TYPE          │EXTERNAL                                                                                            │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│DATA_SOURCE_FORMAT  │DELTA                                                                                               │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│COLUMNS             │{"name":"as_int","type_text":"int","type_json":"{\"name\":\"as_int\",\"type\":\"integer\",\"nullable│
│                    │\":false,\"metadata\":{}}","type_name":"INT","type_precision":0,"type_scale":0,"type_interval_type":│
│                    │null,"position":0,"comment":"Int                    column","nullable":false,"partition_index":null}│
│                    │{"name":"as_double","type_text":"double","type_json":"{\"name\":\"as_double\",\"type\":\"double\",\"│
│                    │nullable\":false,\"metadata\":{}}","type_name":"DOUBLE","type_precision":0,"type_scale":0,"type_inte│
│                    │rval_type":null,"position":1,"comment":"Double column","nullable":false,"partition_index":null}     │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│STORAGE_LOCATION    │file:///Users/yayoi/UC/unitycatalog/etc/data/external/unity/default/tables/numbers/                 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│COMMENT             │External table                                                                                      │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│PROPERTIES          │{"key1":"value1","key2":"value2"}                                                                   │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CREATED_AT          │1717996383547                                                                                       │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│UPDATED_AT          │1717996383547                                                                                       │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│TABLE_ID            │3fcf3ca8-e0e4-4587-b28b-9cc50fc30d98                                                                │
└────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

## テーブルの読み込み

```sh
bin/uc table read --full_name unity.default.numbers
```

```
┌───────────────────────────────────────┬──────────────────────────────────────┐
│as_int(integer)                        │as_double(double)                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│564                                    │188.75535598441473                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│755                                    │883.6105633023361                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│644                                    │203.4395591086936                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│75                                     │277.8802190765611                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│42                                     │403.857969425109                      │
├───────────────────────────────────────┼──────────────────────────────────────┤
│680                                    │797.6912200731077                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│821                                    │767.7998537403159                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│484                                    │344.00373976089304                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│477                                    │380.6785614543262                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│131                                    │35.44373222835895                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│294                                    │209.32243623208947                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│150                                    │329.19730274053694                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│539                                    │425.66102859000944                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│247                                    │477.742227230588                      │
├───────────────────────────────────────┼──────────────────────────────────────┤
│958                                    │509.3712727285101                     │
└───────────────────────────────────────┴──────────────────────────────────────┘

```

## テーブルの作成

```sh
bin/uc table create --full_name unity.default.myTable --columns "col1 int, col2 double" --storage_location /tmp/uc/myTable
```

```
Table created successfully at: file:///tmp/uc/myTable
┌────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
│        KEY         │                                               VALUE                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│NAME                │myTable                                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CATALOG_NAME        │unity                                                                                               │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SCHEMA_NAME         │default                                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│TABLE_TYPE          │EXTERNAL                                                                                            │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│DATA_SOURCE_FORMAT  │DELTA                                                                                               │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│COLUMNS             │{"name":"col1","type_text":"int","type_json":"{\"name\":\"col1\",\"type\":\"integer\",\"nullable\":t│
│                    │rue,\"metadata\":{}}","type_name":"INT","type_precision":0,"type_scale":0,"type_interval_type":null,│
│                    │"position":0,"comment":null,"nullable":true,"partition_index":null}                                 │
│                    │{"name":"col2","type_text":"double","type_json":"{\"name\":\"col2\",\"type\":\"double\",\"nullable\"│
│                    │:true,\"metadata\":{}}","type_name":"DOUBLE","type_precision":0,"type_scale":0,"type_interval_type":│
│                    │null,"position":1,"comment":null,"nullable":true,"partition_index":null}                            │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│STORAGE_LOCATION    │/tmp/uc/myTable                                                                                     │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│COMMENT             │null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│PROPERTIES          │{}                                                                                                  │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CREATED_AT          │1718410591952                                                                                       │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│UPDATED_AT          │1718410591952                                                                                       │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│TABLE_ID            │2740a62f-210f-487a-930a-e57c26a6ac20                                                                │
└────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

## テーブルへの書き込み

以下のコマンドではランダムに生成したデータをテーブルに書き込みます。

```sh
bin/uc table write --full_name unity.default.myTable
```

```
Table written to successfully at: file:///tmp/uc/myTable/
┌────────────────────┬──────────────────────────────────────────────────┐
│        KEY         │                      VALUE                       │
└────────────────────┴──────────────────────────────────────────────────┘
```


```sh
bin/uc table read --full_name unity.default.myTable
```

```
┌───────────────────────────────────────┬──────────────────────────────────────┐
│col1(integer)                          │col2(double)                          │
├───────────────────────────────────────┼──────────────────────────────────────┤
│394                                    │357.2492910249696                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│561                                    │486.48668042307474                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│758                                    │416.99888126653195                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│98                                     │706.9843531187902                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│52                                     │220.3889224464608                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│344                                    │420.09398615975044                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│584                                    │382.7593558141724                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│458                                    │211.4124318985574                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│725                                    │202.79002551174307                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│318                                    │61.412447874107265                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│909                                    │898.3751162656671                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│525                                    │124.63508094555908                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│425                                    │600.8869658910287                     │
├───────────────────────────────────────┼──────────────────────────────────────┤
│76                                     │214.12822798784137                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│814                                    │421.1564193905256                     │
└───────────────────────────────────────┴──────────────────────────────────────┘
```

# DuckDBによるDeltaテーブルのオペレーション

割愛します。

# ボリュームのオペレーション

ボリュームとはUnity Catalogで管理されるファイルシステムのマウントポイントのようなものです。任意のファイルを格納することができます。

## ボリュームの一覧

```sh
bin/uc volume list --catalog unity --schema default
```
```
┌────────────┬───────────────────┬───────────────────┬───────────────────┬───────────────────┬───────────────────┬───────────────────┬───────────────────┬───────────────────┬───────────────────┐
│CATALOG_NAME│    SCHEMA_NAME    │       NAME        │      COMMENT      │    CREATED_AT     │    UPDATED_AT     │     VOLUME_ID     │    VOLUME_TYPE    │ STORAGE_LOCATION  │     FULL_NAME     │
├────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┤
│unity       │default            │txt_files          │null               │1717996383550      │1717996383550      │a38cd676-e90f-41...│MANAGED            │file:///Users/ya...│unity.default.tx...│
├────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────┤
│unity       │default            │json_files         │null               │1717996383550      │1717996383550      │7429a7f2-3ad9-4d...│EXTERNAL           │file:///Users/ya...│unity.default.js...│
└────────────┴───────────────────┴───────────────────┴───────────────────┴───────────────────┴───────────────────┴───────────────────┴───────────────────┴───────────────────┴───────────────────┘
```

## メタデータの取得

```sh
bin/uc volume get --full_name unity.default.json_files
```
```
┌────────────────────┬───────────────────────────────────────────────────────────────────────────────────────┐
│        KEY         │                                         VALUE                                         │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│CATALOG_NAME        │unity                                                                                  │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│SCHEMA_NAME         │default                                                                                │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│NAME                │json_files                                                                             │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│COMMENT             │null                                                                                   │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│CREATED_AT          │1717996383550                                                                          │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│UPDATED_AT          │1717996383550                                                                          │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│VOLUME_ID           │7429a7f2-3ad9-4df5-b567-c9cca5ffc8df                                                   │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│VOLUME_TYPE         │EXTERNAL                                                                               │
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│STORAGE_LOCATION    │file:///Users/yayoi/UC/unitycatalog/etc/data/external/unity/default/volumes/json_files/│
├────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│FULL_NAME           │unity.default.json_files                                                               │
└────────────────────┴───────────────────────────────────────────────────────────────────────────────────────┘
```

## ディレクトリやファイルの一覧

```sh
bin/uc volume read --full_name unity.default.json_files
```
```
d.json [file]
c.json [file]
dir1 [directory]
```

## ファイルの読み込み

```sh
bin/uc volume read --full_name unity.default.json_files --path c.json
```
```json
{
  "marks" :[
    {"name" :  "a" , "score" :  20},
    {"name" :  "b" , "score" :  30},
    {"name" :  "c" , "score" :  40},
    {"name" :  "d" , "score" :  50}
  ]
}
```

## サブディレクトリの内容の一覧

```sh
bin/uc volume read --full_name unity.default.json_files --path dir1
```
```
e.json [file]
```

## ボリュームの作成

```sh
bin/uc volume create --full_name unity.default.myVolume --storage_location /tmp/myVolume
```
```
┌────────────────────┬──────────────────────────────────────────────────┐
│        KEY         │                      VALUE                       │
├────────────────────┼──────────────────────────────────────────────────┤
│CATALOG_NAME        │unity                                             │
├────────────────────┼──────────────────────────────────────────────────┤
│SCHEMA_NAME         │default                                           │
├────────────────────┼──────────────────────────────────────────────────┤
│NAME                │myVolume                                          │
├────────────────────┼──────────────────────────────────────────────────┤
│COMMENT             │null                                              │
├────────────────────┼──────────────────────────────────────────────────┤
│CREATED_AT          │1718410739078                                     │
├────────────────────┼──────────────────────────────────────────────────┤
│UPDATED_AT          │1718410739078                                     │
├────────────────────┼──────────────────────────────────────────────────┤
│VOLUME_ID           │b5124f06-c96b-4b9a-b657-82c2e3cbabb6              │
├────────────────────┼──────────────────────────────────────────────────┤
│VOLUME_TYPE         │EXTERNAL                                          │
├────────────────────┼──────────────────────────────────────────────────┤
│STORAGE_LOCATION    │file:///tmp/myVolume                              │
├────────────────────┼──────────────────────────────────────────────────┤
│FULL_NAME           │unity.default.myVolume                            │
└────────────────────┴──────────────────────────────────────────────────┘
```

# 関数のオペレーション

## 関数の一覧

```sh
bin/uc function list --catalog unity --schema default
```
```
┌────────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
│    NAME    │CATALOG_│SCHEMA_N│INPUT_PA│DATA_TYP│FULL_DAT│RETURN_P│ROUTINE_│ROUTINE_│ROUTINE_│PARAMETE│IS_DETER│SQL_DATA│IS_NULL_│SECURITY│SPECIFIC│COMMENT │PROPERTI│FULL_NAM│CREATED_│UPDATED_│FUNCTION│EXTERNAL│
│            │  NAME  │  AME   │  RAMS  │   E    │ A_TYPE │ ARAMS  │  BODY  │DEFINITI│DEPENDEN│R_STYLE │MINISTIC│_ACCESS │  CALL  │ _TYPE  │ _NAME  │        │   ES   │   E    │   AT   │   AT   │  _ID   │_LANGUAG│
│            │        │        │        │        │        │        │        │   ON   │  CIES  │        │        │        │        │        │        │        │        │        │        │        │        │   E    │
├────────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
│sum         │unity   │default │{"par...│INT     │INT     │null    │EXTERNAL│t = x...│null    │S       │true    │NO_SQL  │false   │DEFINER │sum     │Adds ...│null    │unity...│17180...│null    │df40c...│python  │
├────────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
│lowercase   │unity   │default │{"par...│STRING  │STRING  │null    │EXTERNAL│g = s...│null    │S       │true    │NO_SQL  │false   │DEFINER │lower...│Conve...│null    │unity...│17180...│null    │74d2c...│python  │
└────────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
```

## メタデータの取得

```sh
bin/uc function get --full_name unity.default.sum
```
```
┌────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
│        KEY         │                                               VALUE                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│NAME                │sum                                                                                                 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CATALOG_NAME        │unity                                                                                               │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SCHEMA_NAME         │default                                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│INPUT_PARAMS        │{"parameters":[{"name":"x","type_text":"int","type_json":"{\"name\":\"x\",\"type\":\"integer\",\"nul│
│                    │lable\":false,\"metadata\":{}}","type_name":"INT","type_precision":null,"type_scale":null,"type_inte│
│                    │rval_type":null,"position":0,"parameter_mode":"IN","parameter_type":"PARAM","parameter_default":null│
│                    │,"comment":null},{"name":"y","type_text":"int","type_json":"{\"name\":\"y\",\"type\":\"integer\",\"n│
│                    │ullable\":false,\"metadata\":{}}","type_name":"INT","type_precision":null,"type_scale":null,"type_in│
│                    │terval_type":null,"position":1,"parameter_mode":"IN","parameter_type":"PARAM","parameter_default":nu│
│                    │ll,"comment":null},{"name":"z","type_text":"int","type_json":"{\"name\":\"z\",\"type\":\"integer\",\│
│                    │"nullable\":false,\"metadata\":{}}","type_name":"INT","type_precision":null,"type_scale":null,"type_│
│                    │interval_type":null,"position":2,"parameter_mode":"IN","parameter_type":"PARAM","parameter_default":│
│                    │null,"comment":null}]}                                                                              │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│DATA_TYPE           │INT                                                                                                 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│FULL_DATA_TYPE      │INT                                                                                                 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│RETURN_PARAMS       │null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ROUTINE_BODY        │EXTERNAL                                                                                            │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ROUTINE_DEFINITION  │t = x + y + z\nreturn t                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ROUTINE_DEPENDENCIES│null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│PARAMETER_STYLE     │S                                                                                                   │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│IS_DETERMINISTIC    │true                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SQL_DATA_ACCESS     │NO_SQL                                                                                              │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│IS_NULL_CALL        │false                                                                                               │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SECURITY_TYPE       │DEFINER                                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SPECIFIC_NAME       │sum                                                                                                 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│COMMENT             │Adds two numbers.                                                                                   │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│PROPERTIES          │null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│FULL_NAME           │unity.default.sum                                                                                   │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CREATED_AT          │1718053983553                                                                                       │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│UPDATED_AT          │null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│FUNCTION_ID         │df40ce66-e4ce-4a4f-acce-90466a4302e6                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│EXTERNAL_LANGUAGE   │python                                                                                              │
└────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

## 関数の呼び出し

```sh
bin/uc function call --full_name unity.default.sum --input_params "1,2,3"
```
```
6
```

## 関数の作成

```sh
bin/uc function create --full_name unity.default.myFunction --data_type INT --input_params "a int, b int" --def "c=a*b\nreturn c"
```
```
┌────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
│        KEY         │                                               VALUE                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│NAME                │myFunction                                                                                          │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CATALOG_NAME        │unity                                                                                               │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SCHEMA_NAME         │default                                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│INPUT_PARAMS        │{"parameters":[{"name":"a","type_text":"int","type_json":"{\"name\":\"a\",\"type\":\"integer\",\"nul│
│                    │lable\":true,\"metadata\":{}}","type_name":"INT","type_precision":null,"type_scale":null,"type_inter│
│                    │val_type":null,"position":0,"parameter_mode":null,"parameter_type":null,"parameter_default":null,"co│
│                    │mment":null},{"name":"b","type_text":"int","type_json":"{\"name\":\"b\",\"type\":\"integer\",\"nulla│
│                    │ble\":true,\"metadata\":{}}","type_name":"INT","type_precision":null,"type_scale":null,"type_interva│
│                    │l_type":null,"position":1,"parameter_mode":null,"parameter_type":null,"parameter_default":null,"comm│
│                    │ent":null}]}                                                                                        │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│DATA_TYPE           │INT                                                                                                 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│FULL_DATA_TYPE      │INT                                                                                                 │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│RETURN_PARAMS       │null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ROUTINE_BODY        │EXTERNAL                                                                                            │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ROUTINE_DEFINITION  │c=a*b\nreturn c                                                                                     │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ROUTINE_DEPENDENCIES│null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│PARAMETER_STYLE     │S                                                                                                   │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│IS_DETERMINISTIC    │true                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SQL_DATA_ACCESS     │NO_SQL                                                                                              │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│IS_NULL_CALL        │true                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SECURITY_TYPE       │DEFINER                                                                                             │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│SPECIFIC_NAME       │myFunction                                                                                          │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│COMMENT             │null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│PROPERTIES          │null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│FULL_NAME           │unity.default.myFunction                                                                            │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│CREATED_AT          │1718411072913                                                                                       │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│UPDATED_AT          │null                                                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│FUNCTION_ID         │79a07258-9e63-405b-a36a-7b2bdea812cc                                                                │
├────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│EXTERNAL_LANGUAGE   │python                                                                                              │
└────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

呼び出してみます。

```sh
bin/uc function call --full_name unity.default.myFunction --input_params "2,3"
```
積が返ってきます。
```
6
```

# Iceberg REST Catalog経由でのDelta UniFormテーブルの読み込み

割愛します。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)