適用対象: Microsoft Fabric の✅ Warehouse
OPENROWSET 関数を使用すると、Parquet または CSV ファイルの内容を読み取り、データを行のセットとして返すことができます。 ファイルは、Azure Blob Storage、Azure Data Lake Storage、または Fabric OneLake に格納できます。
Important
OPENROWSET 関数を使用した Fabric OneLake ストレージからのファイルの読み取りは、現在 プレビュー段階です。
この機能を使用して、データ ウェアハウス テーブルに読み込む前にファイルの内容を検査できます。 OPENROWSET を使用すると、Fabric Warehouse に取り込むファイルを簡単に調べ、取り込む列を理解し、その種類を決定できます。
データを理解したら、取り込まれたファイルコンテンツの格納に使用されるテーブルを作成できます。
OPENROWSET 関数を使用して Parquet ファイルを参照する
最初の例では、Parquet ソースからのデータを検査します。
次のコードを使用して、Parquet ソースで OPENROWSET(BULK) 関数を使用してファイルからサンプル データを読み取ります。
SELECT TOP 10 *
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet') AS data
このデータは一般公開されており、認証を必要としないため、このクエリを Fabric ウェアハウスに簡単にコピーして、変更なしで実行できます。
認証の詳細は必要ありません。
FORMAT 関数は URI の OPENROWSET ファイル拡張子に基づいて Parquet 形式を読み取っていると想定するため、.parquet オプションを指定する必要はありません。
OPENROWSET 関数を使用して CSV ファイルを参照する
2 番目の例では、CSV ファイルからデータを検査します。 OPENROWSET(BULK) 関数を使用して CSV ファイルからサンプル データを読み取る場合は、次のコードを使用します。
SELECT TOP 10 *
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv') AS data
このデータは一般公開されており、認証を必要としないため、このクエリを Fabric ウェアハウスに簡単にコピーして、変更なしで実行できます。 認証の詳細は必要ありません。
FORMAT関数は URI のOPENROWSETファイル拡張子に基づいてCSV形式を読み取っていると想定するため、.csv オプションを指定する必要はありません。
Note
結果では、このファイルの最初の行にデータではなく列名が含まれていることに気付く場合があります。 この場合は、HEADER_ROW オプションを使用してクエリを変更して行をスキップし、列名にのみ使用する必要があります。 これはデータ探索プロセスの一部であり、基になるデータと一致するまでファイルを徐々に調整します。
OPENROWSET 関数を使用して JSONL ファイルを参照する
OPENROWSET(BULK)関数を使用すると、行区切り形式で JSON ファイルを参照できます。
SELECT TOP 10 *
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.jsonl') AS data
各行が有効な JSON ドキュメントを表す行区切りのテキストがファイルに含まれている場合は、 OPENROWSET 関数を使用して直接読み取ることができます。
FORMAT オプションを明示的に指定する必要はありません。
OPENROWSETは、URI の.jsonl、.ldjson、.ndjsonなどの一般的なファイル拡張子に基づいて、JSONL 形式を自動的に推論します。 ただし、この形式に別のファイル拡張子を使用している場合は、正しい解析を行うために FORMAT = 'jsonl' を指定する必要があります。
Fabric OneLake でファイルを読み取る
OPENROWSET(BULK)関数を使用すると、Fabric OneLake に格納されているファイルを読み取られます。 ファイルが lakehouse の [ファイル] セクションに格納されている場合は、以下の構文を使用してこのファイルを読み取ることができます。
SELECT TOP 10 *
FROM OPENROWSET(BULK 'https://onelake.dfs.fabric.microsoft.com/<workspaceId>/<lakehouseId>/Files/latest/bing_covid-19_data.jsonl') AS data
<workspaceId>と<lakehouseId>を、Fabric ワークスペース URI で見つけることができるワークスペースとレイクハウス GUID に差し替えます。 レイクハウスの /Files セクションでファイルを参照していることを確認します。
Important
OPENROWSET 関数を使用した Fabric OneLake ストレージからのファイルの読み取りは、現在 プレビュー段階です。
とCOPY INTOの両方に適用できるOPENROWSET(BULK)を参照してください。
カスタム テキスト ファイルの読み取り
OPENROWSET(BULK)関数を使用すると、カスタム テキスト ファイルを読み取るためのさまざまなオプションを定義できます。
たとえば、ROWTERMINATOR と FIELDTERMINATOR の値を指定して、基になるファイル形式を示すことができます。
select *
from OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv',
FORMAT='CSV',
HEADER_ROW=True,
ROWTERMINATOR='\n',
FIELDTERMINATOR=','
) AS data
この例では、各行が改行で区切られ、各フィールドがコンマで区切られた CSV 形式でファイルを読み取っていることを明示的に指定します。 最初の行には、列名に使用されるヘッダーが含まれています。
列のメタデータを探索する
OPENROWSET 関数を使用すると、サンプル データを読み取るクエリと sp_describe_first_result_set プロシージャを組み合わせることで、ファイル列とその型を簡単に表示できます。
EXEC sp_describe_first_result_set
N'SELECT TOP 0 *
FROM OPENROWSET(BULK ''https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet'') AS data';
この例では、 sp_describe_first_result_set プロシージャは、 OPENROWSET 関数を使用してクエリを実行します。この関数は行を返しません。
その後、この内部クエリから列スキーマを受け取り、プロシージャの結果として列スキーマを返します。
この列スキーマを使用して、データを取り込む CREATE TABLE ステートメントで宛先テーブルの構造を定義できます。
代わりに、次の例に示すように、これらの結果を使用して、 OPENROWSET 関数の結果に対してより正確な型を指定できます。
OPENROWSET 関数のスキーマを指定する
OPENROWSET(BULK) 関数は、データのサンプルに基づいて推定列の型を返します。
サンプルが代表的でない場合は、予期しない型またはそのサイズが得られる可能性があります。
ファイル内の列の種類がわかっている場合は、WITH 句を使用して列のスキーマを明示的に定義できます。
SELECT TOP 10 *
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv') AS data
WITH (updated date,
load_time datetime2,
deaths_change smallint,
id int,
confirmed int,
confirmed_change int,
deaths int,
recovered int,
recovered_change int,
latitude float,
longitude float,
iso2 varchar(8000),
iso3 varchar(8000),
country_region varchar(8000),
admin_region_1 varchar(8000),
iso_subdivision varchar(8000),
admin_region_2 varchar(8000)
) AS data;
OPENROWSET(BULK) 関数は、列の型を推測する代わりに、WITH 句で指定された型を明示的に割り当てます。
これにより、より正確な型を定義できるため、クエリのパフォーマンスを向上させることができます。
次のステップ
ファイルの探索を完了し、変換先テーブルを作成したら、次のいずれかの方法を使用してインジェストを続行できます。