# データグリッド関数

# jsonテキストからデータグリッドを生成する

<details><summary>DATAGRID_CREATE関数</summary>

``` sas
DATAGRID_CREATE(dataGrid, jsonString);

/* 使用例 */
dcl package datagrid dg();
jsonString = '[{"metadata":[{"column_1":"string"}]},{"data":[["text1"], ["text2"]]}]';
DATAGRID_CREATE(dg, jsonString);
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/p1b00g0lvqulmxn196x7y6q92yxb.htm>

</details>

# データグリッドを複製する

<details><summary>DATAGRID_COPY関数</summary>

``` sas
DATAGRID_COPY(sourceDataGrid, targetDataGrid)
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/p0ff2os5c08sj7n1oel2xofoqyny.htm>

</details>

# 列定義を保持したまま、行だけを削除する

<details><summary>DATAGRID_CLEARDATA関数</summary>

``` sas
DATAGRID_CLEARDATA(dataGrid)
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n1shy8y4bvhh6gn112k7w50mpifx.htm>

</details>

# 列を追加する

<details><summary>DATAGRID_ADDCOLUMN関数</summary>

``` sas
DATAGRID_ADDCOLUMN(dataGrid, columnName, columnType);
```

- columnTypeに想定外の値が入っている場合、列の追加は行われない。
- 使える型名は以下。
  - boolean, bool, double, decimal, integer, int, long, string

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n1djgke34f9wdhn15rsisdozptej.htm>
</details>

# 列を削除する

<details><summary>DATAGRID_DELETECOLUMN関数</summary>

``` sas
DATAGRID_DELETECOLUMN(dataGrid, columnName);
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n07yra1v2tnuxdn1ei3rsz8lzi2h.htm>

</details>

# 行を追加する

<details><summary>DATAGRID_ADDROW関数</summary>

``` sas
DATAGRID_ADDROW(データグリッド変数, <任意>追加する行数)
```

下記のように記述すると「追加した行は今何行目にあるか」を取得することができる。  
（関数の返り値として整数が返ってくる為）

``` sas
datagrid_rownum = DATAGRID_ADDROW(dataGrid);
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n109izonc0diazn0z2gy6wqehync.htm>

</details>

# 行を削除する

<details><summary>DATAGRID_DELETEROW ... 行を削除する</summary>

``` sas
DATAGRID_DELETEROW(dataGrid, deleteRowNumber);
```

行番号を指定し、データグリッドの行を削除する。  

``` sas
DATAGRID_DELETEROW(dataGrid, 5);
```

複数行削除する場合は下記のように記述する。（この場合、5～8行目が削除される）

``` sas
DATAGRID_DELETEROW(dataGrid, 5, 8);
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n0cx6kthm2pdkgn1l2zlad29nlel.htm>

</details>

# データグリッド内の値を取得する

<details><summary>DATAGRID_GET関数</summary>

``` sas
value = DATAGRID_GET(dataGrid, columnName, rowNumber)
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n04ham6nlknk8ln17nuk76nue4vw.htm>

</details>

# 値を代入する

<details><summary>DATAGRID_SET関数</summary>

``` sas
DATAGRID_SET(dataGrid, columnName, rowNumber, settingValue)
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/p0danjcrv2wxttn1isg5kq69rcb2.htm>

</details>

# 条件に一致する行のうち、1番目の行から値を取得する

<details><summary>DATAGRID_FILTEREDGET ... 条件に一致する行のうち、1番目の行から値を取得する</summary>

条件に一致する行のうち、1番目の行から値を取得する。
（条件を満たす行が複数存在する場合は、最初に条件と一致した行から値を取得する）

``` sas
DATAGRID_FILTEREDGET(dataGrid, columnName, filterColumnName, operator, filterValue)

/* 使用例 */
status = DATAGRID_FILTEREDGET(DebtEval, 'approvalStatus', 'riskGroup', 'EQ', 'Low')
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n1mwcqt8wn70gxn17vwqtle2lgod.htm>

</details>

# 条件に一致する行のうち、1番目の行番号を取得する

<details><summary>DATAGRID_FILTEREDGETINDEX ... 条件に一致する行のうち、1番目の行番号を取得する</summary>

条件に一致する行のうち、1番目の行番号を取得する。  
（条件を満たす行が複数存在する場合は、最初に条件と一致した行の番号を取得する）

``` sas
DATAGRID_FILTEREDGETUINDEX(dataGrid, columnName, filterColumnName, operator, filterValue)

/* 使用例 */
row_num = DATAGRID_FILTEREDGETINDEX(DebtEval, 'approvalStatus', 'riskGroup', 'EQ', 'Low')
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n15xvdgven63q0n1rnu3uktmf9cq.htm>

</details>

# 行数を取得する

<details><summary>DATAGRID_COUNT関数</summary>

``` sas
row_count = DATAGRID_COUNT関数(dataGrid);
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/p0wg7r5h8ayh0bn173vtjch62vql.htm>

</details>

# 指定列の合計値を取得する

<details><summary>DATAGRID_SUM ... 指定列の合計値を取得する</summary>

``` sas
DATAGRID_SUM(dataGrid, column)

/* 使用例 */
payment_sum = DATAGRID_SUM(dataGrid, 'payment');
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/p1du23931dz4tgn1vdf3ahx05qbe.htm>

</details>

# 列名と条件を指定し、条件に一致する行数を取得する

<details><summary>DATAGRID_MATCHCOUNT関数</summary>

``` sas
row_count = DATAGRID_MATCHCOUNT(dataGrid, column_name, operator, match_value);

/* 記述例 */
row_count = DATAGRID_MATCHCOUNT(dataGrid, 'is_complete_flg', '=', 'Y');
```

使える演算子は以下。

|Operator|Description|
|-|-|
|EQ, =, ==|一致する|
|NE, !=, ^=, <>|一致しない|
|GT, >|よりも大きい|
|LT, <|よりも小さい|
|LE, <=|以下|
|GE, >=|以上|

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n1ic8wboejbzb6n11vltlxtnz2is.htm>

</details>

# データグリッドをソートする

<details><summary>DATAGRID_SORT関数 ... データグリッドをソートする</summary>

``` sas
DATAGRID_SORT(sourceDataGrid, sortColumn, sortOrder, targetDataGrid)
```

sortOrderには`'A'`(昇順)または`'D'`(降順)を指定する。

``` sas
DATAGRID_ADDROW(dataGrid, 'column1', 'A', dataGridSorted);
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n08c59acvwpzx3n1pf4z22crgobo.htm>

</details>

# jsonテキストとして内容を取得する

<details><summary>DATAGRID_TOSTRING関数</summary>

``` sas
str = DATAGRID_TOSTRING(dataGrid);
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n1d2o8h7l2hbxfn17wrmnkg2zulw.htm>

</details>

# 内容をログに出力する

<details><summary>DATAGRID_DUMPTOLOG関数</summary>

``` sas
DATAGRID_DUMPTOLOG(データグリッド変数)
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/p1da42svmyhzygn1r1f2uq10ntsh.htm>

</details>

# 2つのデータグリッドとそのカラム名を指定し、値が一致している行数を算出する

<details><summary>DATAGRID_GRIDMATCHCOUNT関数</summary>

``` sas
row_count = DATAGRID_GRIDMATCHCOUNT(dataGrid1, dataGrid2, column1, column2);
row_count = DATAGRID_GRIDMATCHCOUNT(dataGrid1, dataGrid2, keyColumn);
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n1j3q1ssilim7qn16y4q1wwkje0x.htm>

</details>

# 2つのデータグリッドを縦方向に結合する

<details><summary>DATAGRID_APPEND ... 2つのデータグリッドを縦方向に結合する</summary>

``` sas
DATAGRID_APPEND(dataGrid1, dataGrid2)
```

dataGrid2の行を、dataGrid1に追加する。  
返り値として、縦結合後のデータグリッドの行数を返す。

``` sas
rownum = DATAGRID_APPEND(dataGrid1, dataGrid2)
```

<https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n0plj4pbqiaxwnn1gzcgik62kxf7.htm>

</details>