Stream Analytics での参照に参照データを使用するUsing reference data for lookups in Stream Analytics

参照データ (別名、ルックアップ テーブル) は、静的または本来はあまり変更されない有限のデータ セットであり、データ ストリームのルックアップや増大を行うために使用されます。Reference data (also known as a lookup table) is a finite data set that is static or slowly changing in nature, used to perform a lookup or to augment your data streams. たとえば、IoT のシナリオでは、センサーに関する (変化が頻繁ではない) メタデータを参照データに格納し、リアルタイムの IoT データ ストリームと結合することができます。For example, in an IoT scenario, you could store metadata about sensors (which don’t change often) in reference data and join it with real time IoT data streams. Azure Stream Analytics は、参照データをメモリに読み込んで、待機時間の短いストリーム処理を実現します。Azure Stream Analytics loads reference data in memory to achieve low latency stream processing. Azure Stream Analytics ジョブで参照データを使用するには、一般にクエリで参照データの結合を使用します。To make use of reference data in your Azure Stream Analytics job, you will generally use a Reference Data Join in your query.


自動車が料金所を通過したときに生成されるイベントのリアルタイム ストリームを作成できます。You can have a real time stream of events generated when cars pass a toll booth. 料金所では、ライセンス プレートをリアルタイムでキャプチャし、登録の詳細がある静的なデータセットと結合して、有効期限が切れたライセンス プレートを識別できます。The toll booth can capture the license plate in real time and join with a static dataset that has registration details to identify license plates that have expired.

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

Stream Analytics は、参照データの格納レイヤーとして Azure BLOB ストレージおよび Azure SQL Database をサポートします。Stream Analytics supports Azure Blob storage and Azure SQL Database as the storage layer for Reference Data. 任意の数のクラウド ベースおよびオンプレミスのデータ ストアを使用するために、Azure Data Factory から参照データを BLOB ストレージに変換またはコピー (あるいは両方) することもできます。You can also transform and/or copy reference data to Blob storage from Azure Data Factory to use any number of cloud-based and on-premises data stores.

Azure BLOB ストレージAzure Blob storage

参照データは、BLOB (入力構成に定義された) のシーケンスとしてモデル化され、BLOB の名前内で指定された日付/時刻の昇順で並べられます。Reference data is modeled as a sequence of blobs (defined in the input configuration) in ascending order of the date/time specified in the blob name. シーケンス内の最後の BLOB で指定された日付/時刻より新しい日付/時刻を使用してシーケンスの末尾に追加することがサポートされているだけです。It only supports adding to the end of the sequence by using a date/time greater than the one specified by the last blob in the sequence.

BLOB 参照データを構成するConfigure blob reference data

参照データを構成するには、まず、タイプが 参照データの入力を作成する必要があります。To configure your reference data, you first need to create an input that is of type Reference Data. 次の表では、参照データ入力とその説明を作成するときに指定する必要がある各プロパティについて説明します。The table below explains each property that you will need to provide while creating the reference data input with its description:

プロパティ名Property Name 説明Description
入力のエイリアスInput Alias この入力を参照するジョブ クエリで使用されるわかりやすい名前。A friendly name that will be used in the job query to reference this input.
ストレージ アカウントStorage Account BLOB が配置されるストレージ アカウントの名前。The name of the storage account where your blobs are located. Stream Analytics のジョブと同じサブスクリプションにある場合は、ドロップ ダウンから選択することができます。If it’s in the same subscription as your Stream Analytics Job, you can select it from the drop-down.
ストレージ アカウント キーStorage Account Key ストレージ アカウントに関連付けられている秘密キー。The secret key associated with the storage account. ストレージ アカウントが Stream Analytics のジョブと同じサブスクリプションにある場合は、自動的に設定されます。This gets automatically populated if the storage account is in the same subscription as your Stream Analytics job.
ストレージ コンテナーStorage Container コンテナーにより、Microsoft Azure Blob service に格納される BLOB が論理的にグループ化されます。Containers provide a logical grouping for blobs stored in the Microsoft Azure Blob service. BLOB を Blob service にアップロードするとき、その BLOB のコンテナーを指定する必要があります。When you upload a blob to the Blob service, you must specify a container for that blob.
パスのパターンPath Pattern これは、指定されたコンテナー内で BLOB を見つけるために使用される必須プロパティです。This is a required property that is used to locate your blobs within the specified container. このパス内に、次の 2 つの変数のいずれかまたは両方のインスタンスを指定できます。Within the path, you may choose to specify one or more instances of the following 2 variables:
{date}、{time}{date}, {time}
例 1: products/{date}/{time}/product-list.csvExample 1: products/{date}/{time}/product-list.csv
例 2: products/{date}/product-list.csvExample 2: products/{date}/product-list.csv
例 3: product-list.csvExample 3: product-list.csv

指定されたパスに、BLOB が存在しない場合、BLOB が使用可能になるまで、Stream Analytics ジョブは無期限に待機します。If the blob doesn't exist in the specified path, the Stream Analytics job will wait indefinitely for the blob to become available.
日付形式 [省略可能]Date Format [optional] 指定したパス パターン内で {date} を使用した場合は、サポートされている形式のドロップ ダウンから、BLOB を編成する日付形式を選択できます。If you have used {date} within the Path Pattern that you specified, then you can select the date format in which your blobs are organized from the drop-down of supported formats.
時刻形式 [省略可能]Time Format [optional] 指定したパス パターン内で {time} を使用した場合は、サポートされている形式のドロップ ダウンから、BLOB を編成する時刻形式を選択できます。If you have used {time} within the Path Pattern that you specified, then you can select the time format in which your blobs are organized from the drop-down of supported formats.
例:HH、HH/mm、HH-mmExample: HH, HH/mm, or HH-mm.
イベントのシリアル化の形式Event Serialization Format クエリを予想どおりに動作させるには、入ってくるデータ ストリームに使用しているシリアル化形式が Stream Analytics で認識される必要があります。To make sure your queries work the way you expect, Stream Analytics needs to know which serialization format you're using for incoming data streams. 参照データの場合、サポートされている形式は CSV と JSON です。For Reference Data, the supported formats are CSV and JSON.
エンコードEncoding 現時点でサポートされているエンコード形式は UTF-8 だけです。UTF-8 is the only supported encoding format at this time.

静的参照データStatic reference data

参照データの変更が予期されない場合は、入力構成に静的パスを指定することで、静的参照データのサポートを有効にできます。If your reference data is not expected to change, then support for static reference data is enabled by specifying a static path in the input configuration. Azure Stream Analytics は、指定されたパスから BLOB を取得します。Azure Stream Analytics picks up the blob from the specified path. 置換トークン ({date} と {time}) は必要ありません。{date} and {time} substitution tokens aren't required. 参照データは Stream Analytics 内で不変であるため、静的参照データ BLOB の上書きは推奨されません。Because reference data is immutable in Stream Analytics, overwriting a static reference data blob is not recommended.

スケジュールに従って参照データを生成するGenerate reference data on a schedule

参照データが変更頻度の低いデータセットである場合、参照データの更新をサポートするには、{date} および {time} 置換トークンを使用する入力構成でパス パターンを指定します。If your reference data is a slowly changing data set, then support for refreshing reference data is enabled by specifying a path pattern in the input configuration using the {date} and {time} substitution tokens. Stream Analytics は、このパス パターンに基づいて、更新された参照データ定義を取得します。Stream Analytics picks up the updated reference data definitions based on this path pattern. たとえば、日付形式が "YYYY-MM-DD" で、時刻形式が "HH-mm" の sample/{date}/{time}/products.csv パターンは、更新された BLOB sample/2015-04-16/17-30/products.csv を UTC タイム ゾーンの 2015 年 4 月 16 日の午後 5 時 30 分に回収するように Stream Analytics に指示します。For example, a pattern of sample/{date}/{time}/products.csv with a date format of "YYYY-MM-DD" and a time format of "HH-mm" instructs Stream Analytics to pick up the updated blob sample/2015-04-16/17-30/products.csv at 5:30 PM on April 16th, 2015 UTC time zone.

Azure Stream Analytics は、更新された参照データ BLOB を、1 分間隔で自動的にスキャンします。Azure Stream Analytics automatically scans for refreshed reference data blobs at a one minute interval. わずかな遅延ありでタイムスタンプ 10:30:00 で BLOB をアップロードした場合 (たとえば、10:30:30)、この BLOB を参照する Stream Analytics ジョブでわずかな遅延が認識されます。If a blob with timestamp 10:30:00 is uploaded with a small delay (for example, 10:30:30), you will notice a small delay in Stream Analytics job referencing this blob. このようなシナリオを避けるためには、対象の有効時刻 (この例では 10:30:00) より前に、BLOB をアップロードし、Azure Stream Analytics ジョブが十分な時間を持ってメモリ内を探したりロードし、操作を実行できるようにすることをお勧めします。To avoid such scenarios, it is recommended to upload the blob earlier than the target effective time (10:30:00 in this example) to allow the Stream Analytics job enough time to discover and load it in memory and perform operations.


現在、Stream Analytics のジョブは、コンピューター時間が、BLOB の名前でエンコードされた時刻まで進んだ場合にのみ、BLOB の更新を検索します。Currently Stream Analytics jobs look for the blob refresh only when the machine time advances to the time encoded in the blob name. たとえば、ジョブは、sample/2015-04-16/17-30/products.csv を、できるだけ早く、ただし、UTC タイム ゾーンの 2015 年 4 月 16 日午後 5 時 30 分以降に検索します。For example, the job will look for sample/2015-04-16/17-30/products.csv as soon as possible but no earlier than 5:30 PM on April 16th, 2015 UTC time zone. BLOB のエンコードされた時刻が、検出された最新時刻よりも前の場合、その BLOB は "決して" 検索されません。It will never look for a blob with an encoded time earlier than the last one that is discovered.

たとえば、ジョブによって BLOB sample/2015-04-16/17-30/products.csv が検索されると、エンコードされた日付が 2015 年 4 月 16 日午後 5 時 30 分より前のファイルはすべて無視されるため、到着が遅れた sample/2015-04-16/17-25/products.csv BLOB が同じコンテナーに作成された場合でも、それはジョブでは使用されません。For example, once the job finds the blob sample/2015-04-16/17-30/products.csv it will ignore any files with an encoded date earlier than 5:30 PM April 16th, 2015 so if a late arriving sample/2015-04-16/17-25/products.csv blob gets created in the same container the job will not use it.

同様に、sample/2015-04-16/17-30/products.csv が 2015 年 4 月 16 日午後 10 時 03 分にのみ生成され、同じコンテナーに前の日付の BLOB が存在しない場合、2015 年 4 月 16 日午後 10 時 03 分以降はこのファイルを使用し、その時点までは前の参照データを使用します。Likewise if sample/2015-04-16/17-30/products.csv is only produced at 10:03 PM April 16th, 2015 but no blob with an earlier date is present in the container, the job will use this file starting at 10:03 PM April 16th, 2015 and use the previous reference data until then.

これに対する例外は、ジョブが時間をさかのぼってデータを再処理する必要がある場合、またはジョブが最初に開始される場合です。An exception to this is when the job needs to re-process data back in time or when the job is first started. 開始時点で、ジョブは、指定されたジョブ開始時刻より前に生成された最新の BLOB を探します。At start time the job is looking for the most recent blob produced before the job start time specified. これにより、ジョブの開始時に、 空ではない 参照データ セットが必ず存在するようになります。This is done to ensure that there is a non-empty reference data set when the job starts. 見つからない場合は、ジョブによって次の診断が表示されます: Initializing input without a valid reference data blob for UTC time <start time>If one cannot be found, the job displays the following diagnostic: Initializing input without a valid reference data blob for UTC time <start time>.

Azure Data Factory を使用して Stream Analytics で必要な更新された BLOB を作成するタスクを調整し、参照データ定義を更新することができます。Azure Data Factory can be used to orchestrate the task of creating the updated blobs required by Stream Analytics to update reference data definitions. Data Factory は、データの移動や変換を調整し自動化するクラウドベースのデータ統合サービスです。Data Factory is a cloud-based data integration service that orchestrates and automates the movement and transformation of data. Data Factory は、 クラウド ベースとオンプレミスの多数のデータ ストアへの接続 、および指定された定期的なスケジュールに基づく簡単なデータの移動をサポートします。Data Factory supports connecting to a large number of cloud based and on-premises data stores and moving data easily on a regular schedule that you specify. 事前に定義されたスケジュールで更新される Stream Analytics の参照データを生成するために Data Factory パイプラインを設定する方法の詳細とステップ バイ ステップのガイダンスについては、この GitHub のサンプルを確認してください。For more information and step by step guidance on how to set up a Data Factory pipeline to generate reference data for Stream Analytics which refreshes on a pre-defined schedule, check out this GitHub sample.

BLOB 参照データの更新に関するヒントTips on refreshing blob reference data

  1. 参照データ BLOB は不変であるため、上書きしないでください。Do not overwrite reference data blobs as they are immutable.
  2. 参照データを更新するための推奨方法は次のとおりです。The recommended way to refresh reference data is to:
    • パス パターンで {date}/{time} を使用するUse {date}/{time} in the path pattern
    • ジョブ入力に定義されているコンテナーとパス パターンを使用して、新しい BLOB を追加するAdd a new blob using the same container and path pattern defined in the job input
    • シーケンスの最後の BLOB で指定されている日付/時刻よりも後の値を使用するUse a date/time greater than the one specified by the last blob in the sequence.
  3. 参照データの BLOB の並び替えは、BLOB の "最終変更" 時刻では行われません。{date} および {time} の置換文字を使用して BLOB 名に指定されている時刻と日付によってのみ行われます。Reference data blobs are not ordered by the blob’s "Last Modified" time but only by the time and date specified in the blob name using the {date} and {time} substitutions.
  4. 多数の BLOB を列挙する必要がないように、今後処理を行う予定がない非常に古い BLOB は削除することを検討してください。To avoid having to list large number of blobs, consider deleting very old blobs for which processing will no longer be done. ASA では、再起動のような一部のシナリオで少量の再処理が必要になる可能性がある点に注意してください。Please note that ASA might go have to reprocess a small amount in some scenarios like a restart.

Azure SQL データベースAzure SQL Database

Azure SQL Database の参照データは、Stream Analytics ジョブによって取得され、処理のためにスナップショットとしてメモリに格納されます。Azure SQL Database reference data is retrieved by your Stream Analytics job and is stored as a snapshot in memory for processing. 参照データのスナップショットも、構成設定で指定したストレージ アカウントのコンテナーに格納されます。The snapshot of your reference data is also stored in a container in a storage account that you specify in the configuration settings. ジョブを開始すると、コンテナーは自動作成されます。The container is auto-created when the job starts. ジョブが停止するか失敗状態になると、自動作成されたコンテナーはジョブの再開時に削除されます。If the job is stopped or enters a failed state, the auto-created containers are deleted when the job is restarted.

参照データが変化の遅いデータ セットである場合、ジョブで使用されるスナップショットを定期的に更新する必要があります。If your reference data is a slowly changing data set, you need to periodically refresh the snapshot that is used in your job. Stream Analytics では、Azure SQL Database 入力接続を構成するときにリフレッシュ レートを設定できます。Stream Analytics allows you to set a refresh rate when you configure your Azure SQL Database input connection. Stream Analytics ランタイムは、リフレッシュ レートによって指定された間隔で Azure SQL Database に対してクエリを実行します。The Stream Analytics runtime will query your Azure SQL Database at the interval specified by the refresh rate. サポートされている最速のリフレッシュ レートは 1 分に 1 回です。The fastest refresh rate supported is once per minute. 更新のたびに、Stream Analytics は指定されたストレージ アカウントに新しいスナップショットを格納します。For each refresh, Stream Analytics stores a new snapshot in the storage account provided.

Stream Analytics には、Azure SQL Database に対するクエリの実行に関する 2 つのオプションがあります。Stream Analytics provides two options for querying your Azure SQL Database. スナップショット クエリは必須であり、各ジョブに含まれている必要があります。A snapshot query is mandatory and must be included in each job. Stream Analytics は、リフレッシュ間隔に基づいて定期的にスナップショット クエリを実行し、クエリの結果 (スナップショット) を参照データ セットとして使用します。Stream Analytics runs the snapshot query periodically based on your refresh interval and uses the result of the query (the snapshot) as the reference data set. スナップショット クエリはほとんどのシナリオに適合しますが、大規模データ セットと高速リフレッシュ レートでパフォーマンスの問題が発生した場合、デルタ クエリ オプションを使用できます。The snapshot query should fit most scenarios, but if you run into performance issues with large data sets and fast refresh rates, you can use the delta query option. クエリは、60 秒以内に参照データセットを返せないと、タイムアウトになります。Queries that take more than 60 seconds to return reference data set will result in a timeout.

デルタ クエリ オプションでは、Stream Analytics はスナップショット クエリを最初に実行してベースライン参照データ セットを取得します。With the delta query option, Stream Analytics runs the snapshot query initially to get a baseline reference data set. その後 Stream Analytics は、リフレッシュ間隔に基づいてデルタ クエリを定期的に実行し、増分の変更を取得します。After, Stream Analytics runs the delta query periodically based on your refresh interval to retrieve incremental changes. これらの増分変更が参照データ セットに継続的に適用されることで、更新された状態が維持されます。These incremental changes are continually applied to the reference data set to keep it updated. デルタ クエリの使用により、ストレージ コストおよびネットワーク I/O 操作を削減できる場合があります。Using delta query may help reduce storage cost and network I/O operations.

SQL Database 参照を構成するConfigure SQL Database reference

SQL Database 参照データを構成するには、まず参照データ入力を作成する必要があります。To configure your SQL Database reference data, you first need to create Reference Data input. 次の表は、参照データ入力の作成中に指定する必要がある各プロパティとその説明を示しています。The table below explains each property that you will need to provide while creating the reference data input with its description. 詳細については、SQL Database からの参照データの Azure Stream Analytics ジョブでの使用に関するページを参照してください。For more information, see Use reference data from a SQL Database for an Azure Stream Analytics job.

参照データ入力として Azure SQL Managed Instance を使用できます。You can use Azure SQL Managed Instance as a reference data input. SQL Managed Instance でパブリック エンドポイントを構成してから、Azure Stream Analytics で次の設定を手動で構成する必要があります。You have to configure public endpoint in SQL Managed Instance and then manually configure the following settings in Azure Stream Analytics. データベースがアタッチされた SQL Server が実行されている Azure 仮想マシンも、以下の設定を手動で構成することによりサポートされます。Azure virtual machine running SQL Server with a database attached is also supported by manually configuring the settings below.

プロパティ名Property Name 説明Description
入力のエイリアスInput alias この入力を参照するジョブ クエリで使用されるわかりやすい名前。A friendly name that will be used in the job query to reference this input.
サブスクリプションSubscription サブスクリプションの選択Choose your subscription
データベースDatabase 参照データを含む Azure SQL Database。The Azure SQL Database that contains your reference data. SQL Managed Instance の場合は、ポート 3342 を指定する必要があります。For SQL Managed Instance, it is required to specify the port 3342. たとえば、,3342 のようになりますFor example,,3342
ユーザー名Username Azure SQL Database に関連付けられているユーザー名。The username associated with your Azure SQL Database.
PasswordPassword Azure SQL Database に関連付けられているパスワード。The password associated with your Azure SQL Database.
定期的に更新Refresh periodically このオプションでは、リフレッシュ レートを選択できます。This option allows you to choose a refresh rate. "On"(オン) を選択すると、リフレッシュ レートを DD:HH:MM で指定できます。Choosing "On" will allow you to specify the refresh rate in DD:HH:MM.
スナップショット クエリSnapshot query これは、SQL Database から参照データを取得する既定のクエリ オプションです。This is the default query option that retrieves the reference data from your SQL Database.
デルタ クエリDelta query データ セットが大きくリフレッシュ レートが短い高度なシナリオでは、デルタ クエリの追加を選択します。For advanced scenarios with large data sets and a short refresh rate, choose to add a delta query.

サイズ制限Size limitation

最適なパフォーマンスを得るには、300 MB 未満の参照データセットを使用することをお勧めします。It is recommended to use reference datasets which are less than 300 MB for best performance. 300 MB を超える参照データの使用は、6 SU 以上のジョブでサポートされています。Usage of reference data greater than 300 MB is supported in jobs with 6 SUs or more. この機能はプレビュー段階であり、運用環境では使用できません。This functionality is in preview and must not be used in production. 非常に大きな参照データを使用すると、ジョブのパフォーマンスに影響を与える可能性があります。Using a very large reference data may impact performance of your job. クエリが複雑になり、時間帯集計、一時的な結合、一時的な分析関数などのステートフル処理が含まれるようになると、サポートされる参照データの最大サイズは減少することが予期されます。As the complexity of query increases to include stateful processing, such as windowed aggregates, temporal joins and temporal analytic functions, it is expected that the maximum supported size of reference data decreases. Azure Stream Analytics が参照データを読み込むことができないときに、複雑な操作が実行された場合、ジョブはメモリ不足になり、操作は失敗します。If Azure Stream Analytics cannot load the reference data and perform complex operations, the job will run out of memory and fail. このような場合は、SU % の使用状況メトリックは 100% になります。In such cases, SU % Utilization metric will reach 100%.

ストリーミング ユニットの数Number of Streaming Units 推奨サイズRecommended Size
11 50 MB 以下50 MB or lower
33 150 MB 以下150 MB or lower
6 以上6 and beyond 300 MB 以下。300 MB or lower. 300 MB を超える参照データの使用はプレビューでサポートされており、ジョブのパフォーマンスに影響を与える可能性があります。Using reference data greater than 300 MB is supported in preview and could impact performance of your job.

参照データの圧縮はサポートされていません。Support for compression is not available for reference data.

ジョブ内の複数の参照データセットの結合Joining multiple reference datasets in a job

クエリの 1 つのステップでは、1 つの参照データ入力と 1 つのストリーム入力のみを結合できます。You can join only one stream input with one reference data input in a single step of your query. ただし、クエリを複数のステップに分割することで、複数の参照データセットを結合できます。However, you can join multiple reference datasets by breaking down your query into multiple steps. 次に例を示します。An example is shown below.

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
--Now Join Step1 with second reference data
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

次のステップNext steps