Azure DataLake Analytics V1でU-SQL Tablesに直接アクセスするには？

# Azure DataLake Analytics (ADLA)でのU-SQL Tables
 
ADLAのU-SQLデータベースとは、ADLSのストレージ内に用意されたファイルベースの分散テーブルです。parquetとかのようなものと思っておけば良いようです。

[U-SQL Tables](https://docs.microsoft.com/en-us/u-sql/ddl/tables)

通常はcsvやほかのデータソースから入力して、csvで吐く、という風にしますが、U-SQLに最適化されたU-SQL Tablesの方が以下のメリットがあります。

* 速い　：　リードライトともかなり速くなります。
* 簡単　：　何と、リードライト時にスキーマを書かないで良いです。また、schema on readで生成できるので、最初にCreateする時も何も定義はいりません。（定義することも可能）
* 永続性　：　当然ですが、バックはファイルなので、永続性があります。ただ、アクセスはデータベースのように専用のSQLコマンドベースが基本です。
* 閲覧性　：　後述する専用のビュアーで、SQLデータベースと同じように、スキーマの確認など管理ができます。

[U-SQL Tables - U-SQL Tutorial](https://saveenr.gitbooks.io/usql-tutorial/content/usql-catalog/usql-tables.html)

に書いてあるように、非常に簡単に生成、読込などが可能なので、一度ADLSからロードできたものは全てU-SQL Tablesに変換したくなります。
容量は食うので、その辺はコストとの相談で。

``` U-SQL
@customers  = 
  SELECT * FROM 
    (VALUES
       ("Contoso",   123 ),
       ("Woodgrove", 456 )
    ) AS D( Customer, Id  );

DROP TABLE IF EXISTS MyDB.dbo.Customers;

CREATE TABLE MyDB.dbo.Customers
( 
    INDEX idx  
    CLUSTERED(customer ASC)
    DISTRIBUTED BY HASH(customer) 
) AS SELECT * FROM @customers;
```

``` U-SQL
@rs = 
  SELECT * 
  FROM MyDB.dbo.Customers;
```

# U-SQL Tablesへ直接アクセスするには？

基本は、上記のCREATE,SELECTなどを使って、読み書きを行います。ただ、保存した後のテーブルのブラウズなどは方法が限られています。

## Azure Portal は×

簡単な削除などのオペレーションは、ポータルから出来ると便利と思っているのですが、残念ながら、ファイルのみでTablesの閲覧には対応していません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146939/cb7113e3-48cc-125f-befd-5e17b9c0469d.png)

実はTablesの実体は以下のような、"database"フォルダ内に格納されていますが、テーブル名で探すことすらできず操作できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146939/af0c7b99-bb33-08c7-ce88-27ea5ef2aee5.png)



## Azure Cloud Explorer は×

Data Lake Storeのアクセスが可能になっていますが、ファイルのみでTablesの閲覧には対応しておりません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146939/935c9008-45f2-8da6-b7bf-565075c3df46.png)

## Azure DataLake Tool for Visual Studio は〇

[Develop U-SQL scripts by using Data Lake Tools for Visual Studio](https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-data-lake-tools-get-started)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146939/f88e8ce7-daed-8a72-57fc-0bd888f13790.png)

Visual Studio 用のADLA/U-SQL環境をメインで使う人が多いと思いますが、同拡張を入れると、Server ExplorerにADLAおよびU-SQL Tablesのブラウザが追加されます。テーブルの閲覧、簡易統計の表示、スキーマの確認などがスムーズに行えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146939/e2e5e534-bbc8-f083-6c29-42cb28263779.png)

これによりcsvなどと比べても、削除、結果のプレビューなどについても、同等の使い勝手になり、開発がはかどります。

## Azure DataLake Tool for Visual Studio Code は〇

[Use Azure Data Lake Tools for Visual Studio Code](https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-data-lake-tools-for-vscode)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146939/2ccf5961-acf7-2777-2094-a8fb83ca13e8.png)

Visual Studio CodeにもDataLakeツールが早期から統合されています。DataLakeのブラウザの中にはちゃんとU-SQL Tablesが見れます。中々軽快に動くので、ストレスが無いですね。ただ、Visual Studio用のプラグインと、見え方が少し異なるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146939/6503d0e2-d8a5-4ae2-9974-c114729c4988.png)

# まとめ

U-SQLをデータ処理の主体として使うにはやはり、VisualStudioやVisualStudio Codeをベースに開発をした方が効率的です。
そのうちブラウザだけで同様な事が出来る統合環境が・・・できないですねorz