SnowConvert: 評価レポート¶
一般概要¶
このドキュメントの目的は、 SnowConvert 変換ツールの概要結果をユーザーが理解するためのガイダンスを提供することです。このガイドでは、返されるさまざまなメトリクスと、これらのメトリクスを使用して達成された自動化レベル、および出力コードを関数と同等のSnowflakeコードにするために必要な手作業の量を決定する方法について説明します。
このドキュメントで紹介されているコンセプトのほとんどは、すでにレポートのメインページで説明されています。しかし、ここでは上の画像の最も重要な情報について、他の役立つ情報を紹介します。
解析エラーの合計数: 変換ツールが、変換対象のソース言語の構文的に正しい要素として認識できないテキスト断片を検出した回数。解析のエラーは、多かれ少なかれ影響する可能性があります。解析エラーの影響を受けた LOC の数と、それが全作業負荷のどの程度を占めるかを判断することが重要です。エンコーディングの問題や、ワークロードに何らかの準備が必要なために、解析エラーが発生することがあります。
コード変換率: 変換率とは、 SnowConvert によって機能的に等価なSnowflakeコードに正常に変換されたソースコードの割合です。ツールがサポートされていない要素、 つまり 入力ソースコードの断片でSnowflakeに変換されなかったものが識別されるごとに、変換率に影響します。
識別されたオブジェクト: SnowConvert が識別したトップレベル DDL オブジェクト(テーブル、ビュー、プロシージャなど)の数。オブジェクトに解析エラーがあった場合、それは識別されたオブジェクトではありません。 \ 例: 1行目から6行目までの 最初のオブジェクト。明らかに解析エラーが発生しているため、 SnowConvert は、これをオブジェクトとして識別できません。
変換率モード¶
前述のように、要素がサポートされていないとマークされた場合(解析エラーまたはSnowflakeでサポートされていないため)、変換率は悪化します。サポートされていない各要素により変換率がどの程度悪化するかは、選択されたコードの単位に依存します。文字または行の2つの単位があります。
コード文字を使用した変換率¶
コード文字が選択されている場合、入力ソース内の文字合計数が変換する全体の単位を表します。つまり、全部で100文字あり、10文字の非対応要素が1つしかない場合、変換率は 90% になります。文字を使用した変換率は、サポートされていない要素に属する文字の悪影響のみを考慮するためより正確ですが、手作業で計算し、理解するのが難しくなります。
コード行数による変換率¶
コード行数を選択した場合(デフォルトのオプション)、入力ソースコードのコード行数が変換する全体単位を表し、非対応要素を含む行は、 完全に 非対応のコード単位とみなされます。そのため、同じ100文字の入力コードが5行に分割され、サポートされていない要素が1行にしかない場合、変換率は 80% になります。サポートされていない要素を含む 行全体 もサポートされていないとみなされます。行を使用した変換率は簡単ですが、サポートされていない要素を含むコードの行全体を考慮するため(同じ行にサポートされている要素があっても)、正確性に欠けます。
次の例は、両方のメトリクスを使用して変換率を計算する方法を示しています。
変換率の例¶
入力ソースコード
--Comment123
CREATE TABLE Table1(
Prefix_Employee_Name CHAR(25),
!ERROR_Col,
Prefix_Employee_Sal DECIMAL(8))
空白と改行はコード文字とみなされないため、上記のコードはちょうど100コード文字です。Table1
の上のコメントはテーブルに属し、100文字の一部です。これは、 SnowConvert がこの入力に対して生成する出力コードです。
出力ソースコード
--Comment123
CREATE OR REPLACE TABLE Table1 (
Prefix_Employee_Name CHAR(25)
-- ,
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '4' COLUMN '2' OF THE SOURCE CODE STARTING AT '!'. EXPECTED 'Column Definition' GRAMMAR. LAST MATCHING TOKEN WAS ',' ON LINE '3' COLUMN '31'. FAILED TOKEN WAS '!' ON LINE '4' COLUMN '2'. CODE '15'. **
-- !ERROR_Col
,
Prefix_Employee_Sal DECIMAL(8))
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
テーブルの2列目に解析エラーがあるため、これはサポートされていない要素です。それでは、2つの利用可能な単位を用いて、変換率がどのように影響を受けるかを見てみましょう。
コード文字を使用した変換率¶
入力コードの文字の内訳は以下のとおりです。
--Comment123 /*12 code characters*/
CREATE TABLE Table1( /*18 code characters*/
Prefix_Employee_Name CHAR(25), /*29 code characters*/
!ERROR_Col, /*11 code characters*/
Prefix_Employee_Sal DECIMAL(8)) /*30 code characters*/
コード文字の合計数: 100
サポートされていない要素のコード文字数: 10
結果: 90.00%
注釈
4行目には11文字ありますが、サポートされていないとマークされているのは10文字だけです。これは構文解析のリカバリメカニズムの仕組みによるものです。パーサーがエラーに遭遇すると、次の区切り文字まで(この場合はコンマ「,」)のすべての文字をエラーの一部とみなします。つまり、入力コードに含まれるサポートされていない文字の量は、解析エラーのタイプに大きく依存します。場合によっては、パーサーは実際のエラーの位置近くまで回復できることもありますが、残念なことに、多くのコードがエラーに飲み込まれてしまうこともあります。
コード行数による変換率¶
コード行数を単位とする変換率は、計算がはるかに簡単です。
コード行の合計数: 5
サポートされていない要素を含むコード行数: 1
結果: 80%
LOC 変換率はコードの形式に依存します。¶
コード行数を単位とする場合、変換率は入力コードの形式に大きく依存します。たとえば、以下の2つのコードサンプルは同等ですが、最初の場合はコードすべてが同じ行にまとめられ、2番目の場合はコードが5行に分けられています。
SELECT col1, !error_col FROM table1;
```
```none
SELECT
col1,
!error_col
FROM
table1;
SELECT で参照されている2番目の列は、無効な文字で始まっているためエラーになっていることに注目してください。最初の場合は、コード全体が同じ行にあるため、変換率は0%になります。しかし、2番目の場合はコードが分割されているため、1行のみが影響を受け、変換率は80%になります。
変換率の違い¶
異なる動作システム間では、同じ移行でも変換結果に違いが生じる可能性があります。
これは、ほとんどの場合、Microsoft Windowsがファイル内で CRLF 改行を使用しているために起こります。この形式では \r\n
という文字を使いますが、 UNIX OS では \n
(LF)のみです。 \ この形式の違いにより、コードプロセッサーが入力ファイルを読み取る際、 CRLF 形式は2文字、 LF 形式は1文字とカウントされます。これらのカウントの違いは、変換率、特にコードに含まれる文字列式に異なる結果をもたらします。
この問題を回避するには、Visual Studio Codeなどのツールを使って改行形式を変更します。
ファイルとオブジェクトレベルの内訳¶
SQL - ファイル¶
ファイル |
変換率 |
コード行数 |
オブジェクト合計数 |
解析エラー数 |
---|---|---|---|---|
SQL |
42% |
20 |
2 |
3 |
このセクションでは、すべての SQL ファイルの総合評価の概要情報が得られます。
コード変換率: これは、指定された SQL ファイルの文字に基づく変換率の推定値です。
コード行数: 指定された SQL ファイルのコード行数。
オブジェクト合計数: 指定された SQL ファイルの識別されたオブジェクト合計数。
解析エラー: 指定された SQL ファイルの解析エラーの合計数。
警告
認識できないオブジェクトは、 SQL ファイルセクションの解析エラーとしてもカウントされます。
警告
コード変換率は、未認識オブジェクトも考慮しているため、識別された変換率とは異なる場合があります。
SQL - 識別されたオブジェクト¶
オブジェクト |
変換率 |
コード行数 |
オブジェクト合計数 |
解析エラー数 |
---|---|---|---|---|
テーブル |
67% |
5 |
1 |
1 |
ビュー |
57% |
7 |
1 |
1 |
プロシージャ |
- |
0 |
0 |
0 |
関数 |
N/A |
N/A |
N/A |
N/A |
注釈
上のテーブルにN/Aがリストされている場合、そのオブジェクトタイプはSnowflakeではサポートされていないことを意味し、ほとんどの場合はアーキテクチャ上の理由によるものです。これらのオブジェクトは生成されたコードではコメントアウトされており、変換率を悪化させることはありません。
注釈
変換率フィールドに「-」が表示されている場合は、移行した現在のファイルセットに指定したオブジェクトのインスタンスが含まれていないことを意味します。
このセクションでは、すべての識別されたオブジェクトの評価情報を、テーブル、ビュー、プロシージャなどの DDL オブジェクト別に取得します。
警告
パーサーが処理できなかったコードがある場合は、オブジェクト全体が 未認識オブジェクト として考慮されるため、ここには表示されません。
コード変換率: これは、テーブル、ビュー、プロシージャなどの識別されたオブジェクトの文字に基づく変換率の推定値です。
コード行数: 各タイプの識別されたオブジェクトのコード行数。
オブジェクト合計数: 識別されたオブジェクトのタイプごとのカウント。
解析エラー: 各タイプの識別されたオブジェクトの内部で発生した解析エラーのカウント。
例: ソースコード にある2つのテーブルの場合、1つは未認識オブジェクトで、1つは識別に成功しています。5行のコードからなるこのテーブルの変換率は、1つの解析エラーにより75%です。
問題の内訳¶
このページでは、一意の問題数と問題のリストを重大度順に表示します。
たとえば、指定されたソースコードには、解析エラーに関連する2つの重大な問題と、 サポートされていない関数 に関連する重大度が中程度の1つの問題があります。
注釈
現在の変換率に影響を与えるのは、重大度がMedium/High/Criticalのエラーのみです。警告は単なる情報です。