JP2023040041A - Correlated incremental loading of multiple data sets for interactive data prep application - Google Patents

Correlated incremental loading of multiple data sets for interactive data prep application Download PDF

Info

Publication number
JP2023040041A
JP2023040041A JP2022203797A JP2022203797A JP2023040041A JP 2023040041 A JP2023040041 A JP 2023040041A JP 2022203797 A JP2022203797 A JP 2022203797A JP 2022203797 A JP2022203797 A JP 2022203797A JP 2023040041 A JP2023040041 A JP 2023040041A
Authority
JP
Japan
Prior art keywords
data
pane
flow
rows
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2022203797A
Other languages
Japanese (ja)
Other versions
JP7304480B2 (en
Inventor
ピュー,ウィリアム
Pugh William
チェン,メンシ
Mengxi Chen
キューネン,アイザック
Kunen Isaac
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tableau Software LLC
Original Assignee
Tableau Software LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/155,818 external-priority patent/US10885057B2/en
Application filed by Tableau Software LLC filed Critical Tableau Software LLC
Publication of JP2023040041A publication Critical patent/JP2023040041A/en
Application granted granted Critical
Publication of JP7304480B2 publication Critical patent/JP7304480B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/26Visual data mining; Browsing structured data

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide systems, methods and user interfaces to prepare and curate data for use by a data visualization application.
SOLUTION: The invention provides a user interface that includes a data flow pane and a profile pane. The data flow pane displays a flow diagram that identifies a data source. For each of multiple queries against the data source, the process issues the query against the data source asynchronously with an initial block size. Upon retrieval of the initial set of rows, the process repeats the query asynchronously with an updated block size until all of the rows have been retrieved. The process periodically determines a high water mark for rows from the data source that have been retrieved for all of the queries. When the water mark changes, the process updates the profile pane to display data value histograms for multiple data fields in the data source. Each bar in each data value histogram counts the rows below the water mark that have a single specific data value or range of data values.
SELECTED DRAWING: Figure 1
COPYRIGHT: (C)2023,JPO&INPIT

Description

開示された実装形態は、概してデータ視覚化に関連するものであり、より具体的には、データ視覚化アプリケーションによって使用されるデータを準備およびキュレートするためのシステム、方法、およびユーザインターフェースに関連する。 The disclosed implementations relate generally to data visualization, and more specifically to systems, methods, and user interfaces for preparing and curating data for use by data visualization applications. .

データ可視化アプリケーションは、ユーザが、ビジネス上の意思決定をするのに重要な分布、傾向、外れ値、および他の要因を含むデータセットを視覚的に理解することを可能にする。いくつかのデータセットは、非常に大きいかまたは複雑であり、多くのデータフィールドを含む。複数のデータを視覚化したダッシュボードなど、様々なツールを使用してデータを理解および分析することができる。ただし、データ視覚化アプリケーションで容易に使用できるフォーマットにするには、しばしば、データを操作または加工する必要がある。使用可能なデータソースを構築するために、様々なETL(抽出/変換/読み込み)ツールが使用されることがある。 Data visualization applications enable users to visually understand data sets containing distributions, trends, outliers, and other factors important to making business decisions. Some datasets are very large or complex and contain many data fields. Understand and analyze data using a variety of tools, including dashboards with multiple data visualizations. However, often the data needs to be manipulated or processed to be in a format that can be easily used in data visualization applications. Various ETL (extract/transform/load) tools may be used to build a usable data source.

現在、ETLおよびデータプレパレーションの分野には2つの主要なモデルが存在する。データフロースタイルのシステムは、システムを介したデータの操作およびフローにユーザを集中させる。これにより、ジョブの全体的な構造が明確になり、ユーザがこれらのステップを容易に制御できるようになる。ただし、これらのシステムは概して、ユーザに実際のデータを表示することが不十分であり、ユーザがデータに対して何を行う必要があるのか、または何をする必要があるのかを実際に理解するのが困難になる可能性がある。これらのシステムは、ノードの爆発的な増加の影響を受ける可能性がある。各小さな操作がダイアグラム内で独自のノードを取得すると、適度に複雑なフローであっても、ノードおよびエッジのネズミの巣(rat’s nest)となり混乱を招く可能性がある。 There are currently two main models in the field of ETL and data preparation. Dataflow style systems focus the user on the manipulation and flow of data through the system. This makes the overall structure of the job clear and allows the user to easily control these steps. However, these systems are generally poor at presenting the actual data to the user and not really understanding what the user needs or needs to do with the data. can become difficult. These systems may be subject to an explosion of nodes. If each small operation gets its own node in the diagram, even moderately complex flows can become confusing rat's nests of nodes and edges.

一方、ポッターズホイール(Potter’s Wheel)スタイルのシステムは、実際のデータへの非常に具体的なスプレッドシートスタイルのインターフェースをユーザに提供し、ユーザが直接のアクションを通じてデータをスカルプトできるようにする。ユーザが実際にこれらのシステムでデータフローを作成している間、そのフローは概して遮断されており、ユーザがジョブの全体的な構造を理解して制御することが困難になる。 Potter's Wheel-style systems, on the other hand, provide the user with a very specific spreadsheet-style interface to the actual data, allowing the user to sculpt the data through direct action. . While the user is actually creating the data flow in these systems, that flow is generally blocked, making it difficult for the user to understand and control the overall structure of the job.

大規模なデータセットの場合、一部のデータプレパレーションツールでは、データの読み込みに非常に時間がかかる。例えば、同期して実行されるクエリが複数ある場合、ユーザは全てのデータが読み込まれるのを待つ必要がある。一部のシステムは、クエリを非同期で実行してデータを読み込むことにより、速度が低下したという印象を軽減しようとする。ただし、非同期読み込みでは、ユーザによるデータの操作が妨げられ、インターフェースは個別の非同期クエリの各々のデータを個別に表示するため、インターフェースに一貫性のないデータが表示される場合がある。 For large datasets, some data preparation tools take a very long time to load data. For example, if you have multiple queries running synchronously, the user has to wait for all the data to load. Some systems try to reduce the impression of slowness by executing queries and loading data asynchronously. However, asynchronous loading prevents the user from manipulating the data, and the interface may display inconsistent data because the interface displays the data separately for each separate asynchronous query.

開示された実装形態は、複数の方法で既存のデータプレパレーションツールの問題に対処するものである。複数の非同期クエリを実行することで、データの読み込み時間が短縮され、複数のクエリからのデータが調整されるため、ユーザインターフェースには常に一貫性のあるデータが表示される。加えて、ユーザは、データの読み込み中、直ちにデータを操作して必要な変更を加えることができる。変更は、すでに表示されているデータに適用され、クエリからの新しいデータが到着すると、同じ変更がデータの新しい行にも適用される。 The disclosed implementation addresses the problems of existing data preparation tools in several ways. By running multiple asynchronous queries, data load time is reduced and data from multiple queries is coordinated so the user interface always displays consistent data. In addition, the user can immediately manipulate the data and make necessary changes while the data is loading. Changes are applied to data already displayed, and when new data from a query arrives, the same changes are applied to new rows of data.

一部の実装形態によれば、後続の分析のためにデータを準備するためのコンピュータシステムは、1つ以上のプロセッサおよびメモリを有する。メモリは、1つ以上のプロセッサによる実行用に構成された1つ以上のプログラムを格納する。1つ以上のプログラムは、実行可能命令を含む。システムは、データフローペイン、プロファイルペイン、およびデータペインを含むユーザインターフェースを表示する。データフローペインには、データソースを識別するノード/リンクフローダイアグラムが表示される。データソースに対する複数のクエリの各々について、システムは、行数を指定する初期ブロックサイズを使用して、データソースに対して非同期にクエリを発行する。それぞれのクエリを満たすデータソースから行の初期セットが取得されると、システムは、クエリを満たす全ての行が取得されるまで、更新されたブロックサイズで非同期にクエリを繰り返す。システムは、それぞれのクエリを満たす取得された行をローカルキャッシュに格納する。定期的に(例えば、タイマーに基づいて、またはクエリのうちの1つからのクエリ結果の受信によってトリガーされて)、システムは、全てのクエリの、ローカルキャッシュに取得および保存されたデータソースの行を識別する一意の識別子を決定する。この一意の識別子は、高水準点(high water mark)と称されることもある。一意の識別子が変更されると、システムはプロファイルペインを更新して、データソース内の複数のデータフィールドのデータ値ヒストグラムを表示する。各データ値ヒストグラムの各バーは、(i)一意の識別子によって指定され、(ii)それぞれのデータフィールドに対して単一の特定のデータ値またはデータ値の範囲を有するデータソースの行数を示す。このようにして、複数の独立したクエリが非同期で実行されている間、システムは、プロファイルペインにデータの一貫したビューを提供する。 According to some implementations, a computer system for preparing data for subsequent analysis has one or more processors and memory. The memory stores one or more programs configured for execution by one or more processors. One or more programs contain executable instructions. The system displays a user interface that includes a dataflow pane, a profile pane, and a data pane. The Data Flow pane displays a node/link flow diagram that identifies data sources. For each of multiple queries against the data source, the system asynchronously issues the query against the data source using an initial block size that specifies the number of rows. Once the initial set of rows from the data source that satisfy each query is retrieved, the system asynchronously repeats the query with updated block sizes until all rows satisfying the query are retrieved. The system stores the retrieved rows satisfying each query in a local cache. Periodically (e.g., based on a timer or triggered by receipt of query results from one of the queries), the system retrieves and stores data source rows in the local cache for all queries. determine a unique identifier that identifies the This unique identifier is sometimes referred to as a high water mark. When the unique identifier changes, the system updates the profile pane to display data value histograms for multiple data fields within the data source. Each bar in each data value histogram indicates the number of rows in the data source that are (i) designated by a unique identifier and (ii) have a single specific data value or range of data values for the respective data field. . In this way, the system provides a consistent view of the data in the profile pane while multiple independent queries are executed asynchronously.

一部の実装形態では、データソースに対するそれぞれのクエリの各繰り返しは、それぞれのクエリの過去のブロックサイズよりも大きいブロックサイズを指定する。一部の実装形態では、データソースに対するそれぞれのクエリの各繰り返しは、それぞれのクエリの過去のブロックサイズの2倍のブロックサイズを指定する。 In some implementations, each iteration of each query against the data source specifies a block size that is larger than the previous block size of the respective query. In some implementations, each iteration of each query against the data source specifies a block size that is twice the previous block size of the respective query.

一部の実装形態では、一意の識別子の定期的な決定は、それが1秒に1回以下発生するように調整される。 In some implementations, the periodic determination of the unique identifier is throttled so that it occurs no more than once per second.

一部の実装形態では、一意の識別子が変更された場合、システムは、一意の識別子に従ってデータペインに表示されたデータソースからデータの行を更新する。 In some implementations, if the unique identifier changes, the system updates the row of data from the data source displayed in the data pane according to the unique identifier.

場合によっては、フローダイアグラムの第1のノードが最初に選択され、プロファイルペインに表示されるデータ値のヒストグラムは、第1のノードの計算されたデータセットに対応する。場合によっては、ユーザは、非同期クエリの実行中に、フローダイアグラムの第2のノードを選択する。ユーザ選択に応じて、システムは、プロファイルペインを更新して、第2のノードの結果セットからの複数のデータフィールドの新しいデータ値ヒストグラムを表示する。各データ値ヒストグラムの各バーは、それぞれのデータフィールドに対して単一の特定のデータ値またはデータ値の範囲を有する結果セットの行数を示す。 In some cases, the first node of the flow diagram is selected first and the histogram of data values displayed in the profile pane corresponds to the calculated data set of the first node. In some cases, the user selects a second node of the flow diagram during execution of the asynchronous query. In response to user selection, the system updates the profile pane to display new data value histograms for multiple data fields from the second node's result set. Each bar in each data value histogram indicates the number of rows in the result set that have a single specific data value or range of data values for the respective data field.

一部の実装形態では、一意の識別子は、データソースの主キーフィールドの主キー値であり、データソースの行は、行に対応するキー値が主キー値よりも小さい場合に、一意の識別子によって指定される。一部の実装形態では、一意の識別子は、高水準の行番号であり、データソースの行は、その行に対応する行番号が高水準の行番号以下である場合に、一意の識別子によって指定される。一部の実装形態では、クエリの各々のソート順序は同じである。 In some implementations, the unique identifier is the primary key value of a primary key field in the data source, and a row in the data source has a unique identifier if the key value corresponding to the row is less than the primary key value. Specified by In some implementations, the unique identifier is a high-level row number, and a row in the data source is specified by a unique identifier if the row number corresponding to that row is less than or equal to the high-level row number. be done. In some implementations, the sort order for each of the queries is the same.

場合によっては、1つ以上の非同期クエリの実行中に、ユーザは、プロファイルペインに表示されるデータを変更する。ユーザ入力に応答して、システムはユーザ入力をデータソースから取得された行に適用される操作に変換し、操作の定義を保存する。一意の識別子が変更された場合、プロファイルペインを更新することは、クエリによって取得された行に定義された操作を適用することを含む。 In some cases, a user changes the data displayed in the profile pane while executing one or more asynchronous queries. In response to user input, the system translates the user input into operations to be applied to rows retrieved from the data source and saves the definition of the operations. Updating the profile pane includes applying the defined operation to the rows retrieved by the query if the unique identifier has changed.

ユーザは、プロファイルペインでデータに様々な変更を加えることができる。場合によっては、ユーザ入力は、最初のデータフィールドの最初のデータ値ビンに対応するデータ値ヒストグラムの単一のバーの選択であり、これにより、プロファイルペインに表示されるデータを、最初のフィールドのデータ値が最初のデータ値ビンに対応するデータソースの行にフィルタ処理する。保存された操作により、プロファイルペインに表示されたデータは、最初のフィールドのデータ値が最初のデータ値ビンに対応するデータソースの行にフィルタ処理するフィルタに適用される。 The user can make various changes to the data in the profile pane. In some cases, the user input is the selection of a single bar in the data value histogram corresponding to the first data value bin of the first data field, thereby changing the data displayed in the profile pane to the Filter to rows in the data source whose data value corresponds to the first data value bin. The saved operation applies the data displayed in the profile pane to a filter that filters to rows in the data source where the data value of the first field corresponds to the first data value bin.

場合によっては、ユーザ入力により、最初のデータフィールドに対応するデータ値ヒストグラムがプロファイルペインから削除される。一意の識別子が変更された場合にプロファイルペインを更新することは、データペインから最初のデータフィールドを省略することを含む。 In some cases, user input removes the data value histogram corresponding to the first data field from the profile pane. Updating the profile pane when the unique identifier has changed includes omitting the first data field from the data pane.

場合によっては、ユーザ入力により、クエリによって取得された1つ以上の他の列の関数として計算された、対応するデータ値ヒストグラムを備えた計算列がプロファイルペインに追加される。一意の識別子が変更された場合にプロファイルペインを更新することは、関数およびデータソースから取得された追加の行に従って計算列のデータ値ヒストグラムを更新することを含む。 In some cases, user input adds a computed column to the profile pane with a corresponding data value histogram computed as a function of one or more other columns retrieved by the query. Updating the profile pane when the unique identifier changes includes updating the data value histogram of the computed column according to the additional rows retrieved from the function and data source.

場合によっては、ユーザ入力により、プロファイルペインの最初のデータ列の名前が新しい名前に変更される。一意の識別子が変更された場合にプロファイルペインを更新することは、最初のデータ列の新しい名前を保持することを含む。 In some cases, user input renames the first data column in the profile pane to a new name. Updating the profile pane if the unique identifier has changed involves retaining the new name of the first data column.

場合によっては、ユーザ入力により、変換関数に従って、プロファイルペインの最初のデータ列のデータ型が新しいデータ型に変換される。一意の識別子が変更された場合にプロファイルペインを更新することは、データソースから取得した追加の行の最初のデータ列に変換関数を適用することを含む。 In some cases, user input converts the data type of the first data column in the profile pane to a new data type according to a conversion function. Updating the profile pane when the unique identifier changes includes applying a transform function to the first data column of the additional rows retrieved from the data source.

場合によっては、ユーザ入力により、プロファイルペインの最初のデータ列のビンに対応するヒストグラムバーが削除される。一意の識別子が変更された場合にプロファイルペインを更新することは、行がビンに一致する最初のデータ列のデータ値を有する場合、取得した追加の行を削除することを含む。一部の実装形態では、各ビンは、個々のデータ値またはデータ値の連続範囲に対応する。 In some cases, user input removes the histogram bar corresponding to the bin of the first data column in the profile pane. Updating the profile pane if the unique identifier has changed includes deleting the retrieved additional row if the row has a data value in the first data column that matches the bin. In some implementations, each bin corresponds to an individual data value or a continuous range of data values.

一部の実装形態によれば、プロセスはフローダイアグラムをリファクタリングする。プロセスは、ディスプレイ、1つ以上のプロセッサ、および1つ以上のプロセッサによって実行されるように構成された1つ以上のプログラムを格納するメモリを有するコンピュータシステムにおいて実行される。プロセスは、データフローペインおよびパレットペインを含む複数のペインを含むユーザインターフェースを表示することを含む。データフローペインは、複数の既存のノードを有するフローダイアグラムを含み、各ノードは、それぞれのデータソースからデータを取得するためのそれぞれの操作を指定するか、データを変換するためのそれぞれの操作を指定するか、またはそれぞれの出力データセットを作成するためのそれぞれの操作を指定する。また、パレットペインは、複数のフロー要素テンプレートを含む。プロセスは、第1のユーザ入力を受信して、フローダイアグラムから既存のノードを選択するか、またはパレットペインからフロー要素テンプレートを選択することと、第1のユーザ入力に応答して、(i)配置のための新しいノードを表す移動可能なアイコンを表示することであって、フローダイアグラムにおいて、新しいノードが、選択された既存のノードまたは選択されたフロー要素テンプレートに対応するデータフロー操作を指定する、表示すること、および(ii)新しいノードのデータフロー操作と複数の既存ノードの操作との間の依存関係に従って、フローダイアグラムに1つ以上のドロップターゲットを表示することと、をさらに含む。プロセスは、移動可能なアイコンをドロップターゲットの第1のドロップターゲット上に配置するための第2のユーザ入力を受信し、第2のユーザ入力の検出を停止することをさらに含む。第2のユーザ入力の検出を停止したことに応答して、プロセスは新しいノードを最初のドロップターゲットのフローダイアグラムに挿入する。新しいノードは、指定されたデータフロー操作を実行する。 According to some implementations, the process refactors the flow diagram. The process is executed in a computer system having a display, one or more processors, and a memory storing one or more programs configured to be executed by the one or more processors. The process includes displaying a user interface including multiple panes including a dataflow pane and a palette pane. The Data Flow pane contains a flow diagram with multiple existing nodes, each of which specifies a respective operation for retrieving data from a respective data source or a respective operation for transforming data. or specify each operation to create each output dataset. The palette pane also contains multiple flow element templates. The process receives a first user input to select an existing node from a flow diagram or select a flow element template from a palette pane; and in response to the first user input, (i) Displaying a movable icon representing a new node for placement, the new node specifying a data flow operation corresponding to the selected existing node or the selected flow element template in the flow diagram. , displaying, and (ii) displaying one or more drop targets in the flow diagram according to dependencies between data flow operations of the new node and operations of the plurality of existing nodes. The process further includes receiving a second user input to place the movable icon on the first of the drop targets and stopping detecting the second user input. In response to stopping detecting the second user input, the process inserts a new node into the flow diagram of the first drop target. The new node executes the specified dataflow operation.

一部の実装形態によれば、既存のノードの各々は、指定されたそれぞれの操作に従って計算されたそれぞれの中間データセットを有し、最初のドロップターゲットでフローダイアグラムに新しいノードを挿入することは、指定されたデータフロー操作に従って新しいノードの中間データセットを計算することを含む。 According to some implementations, each of the existing nodes has a respective intermediate data set computed according to the respective operation specified, and inserting a new node into the flow diagram at the first drop target may be , including computing intermediate datasets for new nodes according to the specified dataflow operations.

一部の実装形態によれば、新しいノードは、第1の中間データセットを有する第1の既存ノードの後にフローダイアグラムに配置され、新しいノードの中間データセットの計算は、データフロー操作を第1の中間データセットに適用することを含む。 According to some implementations, the new node is placed in the flow diagram after the first existing node with the first intermediate data set, and the calculation of the intermediate data set of the new node causes the data flow operation to be performed in the first including applying to intermediate datasets of

一部の実装形態によれば、新しいノードは、フローダイアグラムに先行ノードを有さず、新しいノードの中間データセットの計算には、データソースからデータを取得して中間データセットを形成することが含まれる。 According to some implementations, the new node has no predecessor node in the flow diagram, and the computation of the intermediate dataset of the new node may take data from the data source to form the intermediate dataset. included.

一部の実装形態によれば、プロセスは、第2のユーザ入力の検出を停止することに応答して、ユーザインターフェースのデータペインに中間データセットからのデータのサンプリングを表示することをさらに含む。データペインは、複数のペインのうちの1つである。 According to some implementations, the process further includes displaying a sampling of data from the intermediate data set in a data pane of the user interface in response to stopping detecting the second user input. A data pane is one of multiple panes.

一部の実装形態によれば、データフロー操作は、第1のデータフィールドの値に基づいてデータの行をフィルタ処理し、1つ以上のドロップターゲットを表示することは、中間データセットが第1のデータフィールドを含む既存のノードの直後に1つ以上のドロップターゲットを表示することを含む。 According to some implementations, the dataflow operation filters the rows of data based on the value of the first data field and displaying one or more drop targets is such that the intermediate data set is the first data field. , including displaying one or more drop targets immediately after an existing node that contains a data field of

一部の実装形態によれば、第1のユーザ入力により、フローダイアグラムから既存のノードが選択され、最初のドロップターゲットでフローダイアグラムに新しいノードを挿入すると、既存のノードのコピーが作成される。 According to some implementations, a first user input selects an existing node from the flow diagram, and inserting a new node into the flow diagram at the first drop target creates a copy of the existing node.

一部の実装形態によれば、最初のドロップターゲットでフローダイアグラムに新しいノードを挿入することは、フローダイアグラムから既存のノードを削除することをさらに含む。 According to some implementations, inserting a new node into the flow diagram at the first drop target further includes removing an existing node from the flow diagram.

一部の実装形態によれば、データフロー操作は、指定された順序で実行される複数の操作を含む。 According to some implementations, a dataflow operation includes multiple operations that are performed in a specified order.

一部の実装形態では、非一時的コンピュータ可読記憶媒体は、1つ以上のプロセッサ、メモリ、およびディスプレイを有するコンピュータシステムによって実行するように構成された1つ以上のプログラムを格納する。1つ以上のプログラムは、本明細書で説明されるようにフローダイアグラムをリファクタリングするシステムを実装するための命令を含む。 In some implementations, a non-transitory computer-readable storage medium stores one or more programs configured to be executed by a computer system having one or more processors, memory, and displays. The one or more programs contain instructions for implementing a system for refactoring flow diagrams as described herein.

一部の実装形態によれば、コンピュータシステムは、分析のためにデータを準備する。コンピュータシステムは、1つ以上のプロセッサ、メモリ、およびメモリに格納された1つ以上のプログラムを含む。プログラムは、1つ以上のプロセッサによって実行されるように構成される。プログラムは、データプレパレーションアプリケーションのユーザインターフェースを表示する。ユーザインターフェースには、データフローペイン、ツールペイン、プロファイルペイン、およびデータペインが含まれる。データフローペインには、データソース、操作、および出力データセットを識別するノード/リンクフローダイアグラムが表示される。ツールペインには、ユーザがフローダイアグラムにデータソースを追加できるようにするデータソースセレクタが含まれ、ユーザが特定の変換操作を実行するためにフローダイアグラムにノードを挿入できるようにする操作パレットと、ユーザがフローダイアグラムに組み込むことができる他のフローダイアグラムのパレットとが含まれている。プロファイルペインには、データフィールドに関する情報およびデータフィールドのデータ値に関する統計情報など、フローダイアグラムで選択したノードに対応するスキーマが表示され、ユーザは、個々のデータ要素を操作してフローダイアグラムを変更できる。データペインには、フローダイアグラムで選択したノードに対応するデータの行が表示され、ユーザは、個々のデータ値を操作してフローダイアグラムを変更できる。 According to some implementations, a computer system prepares data for analysis. A computer system includes one or more processors, memory, and one or more programs stored in the memory. The program is configured to be executed by one or more processors. The program displays the user interface of the data preparation application. The user interface includes dataflow panes, tool panes, profile panes, and data panes. The Dataflow pane displays a node/link flow diagram that identifies data sources, operations, and output datasets. The Tools pane contains a Data Source Selector that allows the user to add data sources to the flow diagram, an Operations Palette that allows the user to insert nodes into the flow diagram to perform specific transformation operations, and It contains a palette of other flow diagrams that the user can incorporate into the flow diagram. The Profile pane displays the schema corresponding to the selected node in the flow diagram, including information about the data fields and statistics about the data values in the data fields, and allows the user to manipulate individual data elements to modify the flow diagram. . The data pane displays rows of data corresponding to selected nodes in the flow diagram and allows the user to manipulate individual data values to modify the flow diagram.

一部の実装形態では、プロファイルペインに表示されるデータフィールドに関する情報には、最初のデータフィールドのデータ範囲が含まれる。 In some implementations, the information about the data fields displayed in the profile pane includes the data range of the first data field.

一部の実装形態では、プロファイルペインの最初のデータフィールドの最初のデータ範囲に対する最初のユーザアクションに応答して、データを最初のデータ範囲にフィルタ処理する新しいノードがフローダイアグラムに追加される。 In some implementations, in response to the first user action on the first data range of the first data field in the profile pane, a new node is added to the flow diagram that filters the data to the first data range.

一部の実装形態では、プロファイルペインを使用すると、ユーザは、最初のデータフィールドのデータ範囲を指定された値にマッピングすることができる。これにより、ユーザ指定のマッピングを実行するフローダイアグラムに新しいノードが追加される。 In some implementations, the profile pane allows the user to map the data range of the first data field to specified values. This adds a new node to the flow diagram that performs the user-specified mapping.

一部の実装形態では、データペイン内の最初のデータ値との最初のユーザインタラクションに応答して、データを最初のデータ値にフィルタ処理するノードがフローダイアグラムに追加される。 In some implementations, a node is added to the flow diagram that filters the data to the first data value in response to the first user interaction with the first data value in the data pane.

一部の実装形態では、ユーザがデータペインの最初のデータフィールドの最初のデータ値を変更したことに応じて、最初のデータフィールドのデータ値が最初のデータ値と等しいデータの各行に変更を実行する新しいノードがフローダイアグラムに追加される。 In some implementations, in response to the user changing the first data value of the first data field in the data pane, perform a change to each row of data where the data value of the first data field is equal to the first data value. A new node is added to the flow diagram.

一部の実装形態では、データペインの最初のデータフィールドに対する最初のユーザアクションに応答して、最初のデータフィールドを2つ以上の別個のデータフィールドに分割するノードがフローダイアグラムに追加される。 In some implementations, in response to a first user action on the first data field of the data pane, a node is added to the flow diagram that splits the first data field into two or more separate data fields.

一部の実装形態では、データフローペインで第1のノードをツールペインにドラッグする最初のユーザアクションに応答して、新しい操作が操作パレットに追加される。新しい操作は第1のノードに対応する。 In some implementations, a new operation is added to the operations palette in response to the first user action of dragging the first node in the dataflow pane to the tool pane. The new operation corresponds to the first node.

一部の実装形態では、プロファイルペインおよびデータペインは、データフローペインで選択が行われると非同期に更新されるように構成されている。 In some implementations, the profile pane and data pane are configured to update asynchronously when selections are made in the dataflow pane.

一部の実装形態では、プロファイルペインに表示されるデータフィールドに関する情報には、データフィールドのデータ値の分布を表示する1つ以上のヒストグラムが含まれる。 In some implementations, the information about data fields displayed in the profile pane includes one or more histograms that display the distribution of data values for the data fields.

一部の実装形態によれば、方法は、ディスプレイを備えた電子デバイスで実行される。例えば、電子デバイスは、スマートフォン、タブレット、ノートブックコンピュータ、またはデスクトップコンピュータであり得る。本方法は、本明細書に記載のコンピュータシステムのいずれかを実装する。 According to some implementations, the method is performed on an electronic device with a display. For example, the electronic device can be a smart phone, tablet, notebook computer, or desktop computer. The method implements any of the computer systems described herein.

一部の実装形態では、非一時的コンピュータ可読記憶媒体は、1つ以上のプロセッサ、メモリ、およびディスプレイを有するコンピュータシステムによって実行するように構成された1つ以上のプログラムを格納する。1つ以上のプログラムは、本明細書に記載されるように分析のためにデータを準備するシステムを実装するための命令を含む。 In some implementations, a non-transitory computer-readable storage medium stores one or more programs configured to be executed by a computer system having one or more processors, memory, and displays. The one or more programs contain instructions for implementing a system that prepares data for analysis as described herein.

このように、ユーザがデータを分析、準備、およびキュレートすること、ならびに既存のデータフローをリファクタリングすることを可能にする方法、システム、およびグラフィカルユーザインターフェースが開示される。 Thus, methods, systems, and graphical user interfaces are disclosed that allow users to analyze, prepare, and curate data, as well as refactor existing data flows.

前述のシステム、メソッド、およびグラフィカルユーザインターフェース、ならびにデータ視覚化分析およびデータプレパレーションを提供する追加のシステム、方法、ならびにグラフィカルユーザインターフェースをよりよく理解するために、以下の図面と併せて、以下の実装形態の説明を参照する必要がある。これらの図面では、同様の参照番号が図全体の対応する部分を参照している。 To better understand the aforementioned systems, methods and graphical user interfaces, as well as additional systems, methods and graphical user interfaces that provide data visualization analysis and data preparation, the following, in conjunction with the following figures: It is necessary to refer to the implementation description. In these figures, like reference numerals refer to corresponding parts throughout the figures.

一部の実装形態で使用されるグラフィカルユーザインターフェースを示す。4 illustrates a graphical user interface used in some implementations; 一部の実装形態による、コンピューティングデバイスのブロック図である。1 is a block diagram of a computing device, according to some implementations; FIG. 一部の実装形態よる、データプレパレーションアプリケーションのユーザインターフェースを示す。4 illustrates a user interface of a data preparation application, according to some implementations. 図3Aおよび図3Bに示すユーザインターフェースの一部の機能を説明する。Some features of the user interface shown in FIGS. 3A and 3B are described. 一部の実装形態による、サンプルフローダイアグラムを示す。4 illustrates a sample flow diagram, according to some implementations. 一部の実装形態による、一緒に機能するが異なる頻度で実行される一対のフローを示す。2 illustrates a pair of flows that work together but run at different frequencies, according to some implementations. 一部の実装形態による、データプレパレーションアプリケーションを使用して結合を構築することを説明する。Describe building joins using a data preparation application, according to some implementations. 一部の実装形態による、ログファイルの一部を示す。4 shows a portion of a log file, according to some implementations. 一部の実装形態による、ルックアップテーブルの一部を示す。4 illustrates a portion of a lookup table, according to some implementations. 一部の実装形態による、フローの一部の操作、入力、および出力を示す。Shows some operations, inputs, and outputs of a flow according to some implementations. 一部の実装形態による、データプレパレーションシステムの一部のコンポーネントを示す。1 illustrates some components of a data preparation system, according to some implementations. 一部の実装形態による、分析または実行のいずれかのためにフローを評価することを示す。Indicates evaluating a flow for either analysis or execution, according to some implementations. 一部のデータプレパレーションの実装形態で使用される非同期サブシステムを概略的に表す。1 schematically represents an asynchronous subsystem used in some data preparation implementations; 一部の実装形態による、一連のフロー操作を示す。4 illustrates a sequence of flow operations, according to some implementations; 一部の実装形態による、型システムの3つの態様を示す。3 illustrates three aspects of a type system, according to some implementations. 一部の実装形態による、型環境のプロパティを示す。Shows the properties of the type environment, according to some implementations. 一部の実装形態による、既知の全てのデータ型のフローに基づく単純な型チェックを示す。Shows simple type checking based on all known data type flows, according to some implementations. 一部の実装形態による、完全に既知の型による単純な型の失敗を示す。Shows a simple type failure with a completely known type, according to some implementations. 一部の実装形態による、部分フローの単純な型環境計算を示す。6 illustrates a simple type environment computation for partial flows, according to some implementations. 一部の実装形態による、パッケージ化されたコンテナノードの型を示す。4 shows packaged container node types according to some implementations. 一部の実装形態による、より複雑な型環境シナリオを示す。Shows a more complex type environment scenario according to some implementations. 一部の実装形態による、より複雑な型環境シナリオを再利用する方法を示す。Shows how some implementations reuse more complex type environment scenarios. 一部の実装形態による、最も一般的に使用される多くの演算子のプロパティを示す。Shows properties of many of the most commonly used operators, according to some implementations. 一部の実装形態による、フローおよび対応する実行プロセスを示す。4 illustrates a flow and corresponding execution process according to some implementations; 一部の実装形態に従って、フロー全体の実行が、入力ノードおよび出力ノードでの暗黙の物理モデルから開始することを示す。We show that, according to some implementations, execution of the entire flow starts with an implicit physical model at the input and output nodes. 一部の実装形態に従って、部分フローを実行すると、結果とともに物理モデルが具現化されることを示す。FIG. 10 shows that, according to some implementations, executing a partial flow instantiates a physical model along with the result. 一部の実装形態に従って、過去の結果に基づいてフローの一部を実行することを示す。FIG. 10 illustrates executing parts of a flow based on past results, according to some implementations; FIG. 一部の実装形態に従って、固定されたノード860を用いてフローを評価することを示す。FIG. 10 illustrates evaluating flows with fixed nodes 860, according to some implementations. FIG. 一部の実装形態による、フローダイアグラムの一部を示す。4 shows a portion of a flow diagram, according to some implementations. 一部の実装形態による、複数の非同期クエリから取得された結果セットの高水準点を確立するプロセスを示す。4 illustrates the process of establishing a high water mark for result sets obtained from multiple asynchronous queries, according to some implementations. 一部の実装形態に従って、データがデータソースから読み込まれている間にデータプレパレーションユーザインターフェースがどのように更新されるかを示す。Figure 6 shows how the data preparation user interface is updated while data is being read from the data source, according to some implementations. 一部の実装形態による、データプレパレーションユーザインターフェースで部分的に読み込まれたデータとのユーザインタラクションと、追加データが非同期で到着したときのユーザインターフェースへの後続の更新とを示す。4 illustrates user interaction with partially loaded data in a data preparation user interface and subsequent updates to the user interface when additional data arrives asynchronously, according to some implementations. 一部の実装形態による、データプレパレーションユーザインターフェースのプロファイルペインの例である。4 is an example profile pane of a data preparation user interface, according to some implementations.

ここで、実装形態を参照すると、その例は、添付の図面に示されている。以下の説明では、本発明の徹底した理解を提供するために、数多くの特定の詳細が記載される。しかしながら、本発明がこれらの特定の詳細を必要とせずに実施され得ることは当業者には明らかであろう。 Reference will now be made to implementations, examples of which are illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be apparent to those skilled in the art that the present invention may be practiced without these specific details.

図1は、インタラクティブなデータ分析のためのグラフィカルユーザインターフェース100を示している。ユーザインターフェース100は、一部の実装形態によれば、データタブ114および分析タブ116を含む。データタブ114が選択されると、ユーザインターフェース100は、データペインとも称されるスキーマ情報領域110を表示する。スキーマ情報領域110は、データ可視化を構築するために選択および使用され得るデータフィールドを提供する。一部の実装形態では、フィールド名のリストは、ディメンションのグループ(カテゴリデータなど)とメジャーのグループ(数値など)とに分けられる。一部の実装形態には、パラメータのリストも含まれている。分析タブ116が選択されると、ユーザインターフェースは、データ要素(図示せず)の代わりに分析機能のリストを表示する。 FIG. 1 shows a graphical user interface 100 for interactive data analysis. User interface 100 includes a data tab 114 and an analysis tab 116, according to some implementations. When data tab 114 is selected, user interface 100 displays schema information area 110, also referred to as data pane. Schema information area 110 provides data fields that can be selected and used to build data visualizations. In some implementations, the list of field names is divided into groups of dimensions (such as categorical data) and groups of measures (such as numeric). Some implementations also include a list of parameters. When the analysis tab 116 is selected, the user interface displays a list of analysis functions instead of data elements (not shown).

グラフィカルユーザインターフェース100はまた、データ視覚化領域112を含む。データ視覚化領域112は、列棚領域120および行棚領域122などの複数の棚領域を含む。これらは、列棚120および行棚122とも称される。ここに示すように、データ視覚化領域112はまた、視覚的グラフィックを表示するための大きなスペースを有する。データ要素がまだ選択されていないため、最初は、スペースに視覚的なグラフィックがない。一部の実装形態では、データ視覚化領域112は、シートと称される複数の層を有する。 Graphical user interface 100 also includes data visualization area 112 . Data visualization area 112 includes multiple shelf areas, such as column shelf area 120 and row shelf area 122 . These are also referred to as column shelves 120 and row shelves 122 . As shown here, the data visualization area 112 also has a large space for displaying visual graphics. Initially, the space has no visual graphics because no data element has been selected yet. In some implementations, the data visualization area 112 has multiple layers referred to as sheets.

図2は、一部の実装形態によるグラフィカルユーザインターフェース100を表示し得るコンピューティングデバイス200を示すブロック図である。コンピューティングデバイスは、データプレパレーション(「データプレップ」)アプリケーション250によっても使用することができる。コンピューティングデバイス200の様々な例としては、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、およびデータ可視化アプリケーション222を実行することができるディスプレイおよびプロセッサを有する他のコンピューティングデバイスが挙げられる。コンピューティングデバイス200は、典型的には、メモリ214に格納されたモジュール、プログラム、および/または命令を実行し、それによって処理動作を実行するための1つ以上の処理ユニット/コア(CPU)202と、1つ以上のネットワークまたは他の通信インターフェース204と、メモリ214と、これらのコンポーネントを相互接続するための1つ以上の通信バス212と、を含む。通信バス212は、システムコンポーネント間の通信を相互接続および制御する回路網を含み得る。 FIG. 2 is a block diagram illustrating a computing device 200 that may display graphical user interface 100 according to some implementations. The computing device may also be used by a data preparation (“data prep”) application 250 . Various examples of computing device 200 include desktop computers, laptop computers, tablet computers, and other computing devices having displays and processors capable of executing data visualization application 222 . Computing device 200 typically includes one or more processing units/cores (CPUs) 202 for executing modules, programs, and/or instructions stored in memory 214, thereby performing processing operations. , one or more network or other communication interfaces 204, memory 214, and one or more communication buses 212 for interconnecting these components. Communication bus 212 may include circuitry that interconnects and controls communications between system components.

コンピューティングデバイス200は、ディスプレイデバイス208および1つ以上の入力デバイスまたは機構210を備えるユーザインターフェース206を含む。一部の実装形態では、入力デバイス/機構はキーボードを含む。一部の実装形態では、入力デバイス/機構は、ディスプレイデバイス208に必要に応じて表示される「ソフト」キーボードを含み、ユーザがディスプレイ208に表示される「キーを押す」ことを可能にする。一部の実装形態では、ディスプレイ208および入力デバイス/機構210は、タッチスクリーンディスプレイ(タッチセンシティブディスプレイとも称される)を含む。 Computing device 200 includes a user interface 206 with a display device 208 and one or more input devices or mechanisms 210 . In some implementations, the input device/mechanism includes a keyboard. In some implementations, the input device/mechanism includes a “soft” keyboard optionally displayed on the display device 208 to allow the user to “press keys” displayed on the display 208 . In some implementations, display 208 and input device/mechanism 210 include a touch screen display (also referred to as a touch sensitive display).

一部の実装形態では、メモリ214は、DRAM、SRAM、DDR RAM、または他のランダムアクセス固体メモリデバイスなどの高速ランダムアクセスメモリを含む。一部の実装形態では、メモリ214は、1つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性固体記憶デバイスなどの不揮発性メモリを含む。一部の実装形態では、メモリ214は、CPU(複数可)202から遠隔に位置する1つ以上の記憶デバイスを含む。メモリ214、または代替的にメモリ214内の不揮発性メモリデバイス(複数可)は、非一時的コンピュータ可読記憶媒体を含む。一部の実装形態では、メモリ214、またはメモリ214のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、およびデータ構造、またはそれらのサブセットを格納する。
●様々な基本的なシステムサービスを処理し、ハードウェアに依存するタスクを実行するための手順を含むオペレーティングシステム216。
●1つ以上の通信ネットワークインターフェース204(有線または無線)およびインターネット、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなど、1つ以上の通信ネットワークを介してコンピューティングデバイス200を他のコンピュータおよびデバイスに接続するために使用される通信モジュール218。
●ユーザがネットワークを介して遠隔のコンピュータまたはデバイスと通信することを可能にするブラウザ(またはウェブページを表示することができる他のアプリケーション)220。
●ユーザが視覚的グラフィックスを構築するためのグラフィカルユーザインターフェース100を提供するデータ視覚化アプリケーション222。例えば、ユーザは、1つ以上のデータソース240(コンピューティングデバイス200に格納され得るか、またはリモートに格納され得る)を選択し、データソース(複数可)からデータフィールドを選択し、選択されたフィールドを使用して視覚的グラフィックを定義する。一部の実装形態では、ユーザが提供する情報は、視覚的仕様228として格納される。データ視覚化アプリケーション222は、データ視覚化生成モジュール226を含み、これは、ユーザ入力(例えば、視覚的仕様228)を受信し、対応する視覚的グラフィック(「データ視覚化」または「データビズ」とも称される)を生成する。次に、データ可視化アプリケーション222は、生成された視覚的グラフィックをユーザインターフェース100に表示する。一部の実装形態では、データ可視化アプリケーション222は、スタンドアロンアプリケーション(例えば、デスクトップアプリケーション)として実行される。一部の実装形態では、データ可視化アプリケーション222は、ウェブブラウザ220またはウェブサーバによって提供されるウェブページを使用する別のアプリケーション内で、以下を実行する。
●データ可視化アプリケーション222によって使用される、ゼロ個以上のデータベースまたはデータソース240(例えば、第1のデータソース240-1および第2のデータソース240-2)。一部の実装形態では、データソースは、スプレッドシートファイル、CSVファイル、XMLファイル、もしくはフラットファイルとして格納されるか、またはリレーショナルデータベースに格納される。
In some implementations, memory 214 includes high speed random access memory such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices. In some implementations, memory 214 includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. In some implementations, memory 214 includes one or more storage devices remotely located from CPU(s) 202 . Memory 214, or alternatively, non-volatile memory device(s) within memory 214, includes non-transitory computer-readable storage media. In some implementations, memory 214, or computer-readable storage media in memory 214, stores the following programs, modules, and data structures, or a subset thereof.
• An operating system 216 that handles various basic system services and contains procedures for performing hardware-dependent tasks.
- One or more communication network interfaces 204 (wired or wireless) and one or more communication networks, such as the Internet, other wide area networks, local area networks, metropolitan area networks, etc., to connect the computing device 200 to other computers and devices. Communication module 218 used to connect to.
- A browser (or other application capable of displaying web pages) 220 that allows users to communicate with remote computers or devices over a network.
• A data visualization application 222 that provides a graphical user interface 100 for users to construct visual graphics. For example, the user selects one or more data sources 240 (which may be stored on computing device 200 or may be stored remotely), selects data fields from the data source(s), selects Use fields to define visual graphics. In some implementations, the information provided by the user is stored as visual specification 228 . The data visualization application 222 includes a data visualization generation module 226, which receives user input (eg, visual specifications 228) and generates corresponding visual graphics (also “data visualization” or “datavis”). ). Data visualization application 222 then displays the generated visual graphics on user interface 100 . In some implementations, the data visualization application 222 runs as a standalone application (eg, desktop application). In some implementations, the data visualization application 222 performs the following within another application using web pages served by the web browser 220 or web server.
- Zero or more databases or data sources 240 (eg, a first data source 240-1 and a second data source 240-2) used by the data visualization application 222; In some implementations, data sources are stored as spreadsheet files, CSV files, XML files, flat files, or stored in relational databases.

場合によっては、コンピューティングデバイス200は、データプレップアプリケーション250を格納し、これを使用して、データを分析し、(例えば、データ視覚化アプリケーション222によって)後続の分析のために加工することができる。図3Bは、データプレップアプリケーション250によって使用されるユーザインターフェース251の一例を示している。以下でより詳細に説明されるように、データプレップアプリケーション250により、ユーザがフロー323を構築することが可能となる。 In some cases, computing device 200 stores data prep application 250, which can be used to analyze data and process it for subsequent analysis (eg, by data visualization application 222). . FIG. 3B shows an example user interface 251 used by data prep application 250 . As described in more detail below, data prep application 250 allows users to build flows 323 .

上述の識別された実行可能モジュール、アプリケーション、または手順のセットの各々は、1つ以上のメモリデバイスに格納され得、かつ上述の機能を実行するための命令のセットに対応する。上述の識別されたモジュールまたはプログラム(すなわち、命令のセット)は、別個のソフトウェアプログラム、手順、またはモジュールとして実装される必要はなく、したがって、これらのモジュールの様々なサブセットは、様々な実装形態において組み合わされるか、または別様に再配置され得る。一部の実装形態では、メモリ214は、上述の識別されたモジュールおよびデータ構造のサブセットを格納する。さらに、メモリ214は、上述されていない追加のモジュールまたはデータ構造を格納し得る。 Each of the above-identified sets of executable modules, applications, or procedures may be stored in one or more memory devices and correspond to sets of instructions for performing the functions described above. The modules or programs (i.e., sets of instructions) identified above need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be used in various implementations. may be combined or otherwise rearranged. In some implementations, memory 214 stores a subset of the modules and data structures identified above. Additionally, memory 214 may store additional modules or data structures not described above.

図2は、コンピューティングデバイス200を示しているが、図2は、本明細書で説明されている実装形態の構造的概略としてではなく、存在し得る様々な特徴の機能的説明としてより意図されている。実際には、当業者によって認識されるように、別々に示されたアイテムを組み合わせることができ、いくつかのアイテムを分離することができる。 Although FIG. 2 illustrates computing device 200, FIG. 2 is intended more as a functional illustration of the various features that may be present, rather than as a structural overview of the implementations described herein. ing. In practice, items shown separately could be combined and some items could be separated, as recognized by those skilled in the art.

図3Aおよび図3Bは、一部の実装形態によるデータを準備するためのユーザインターフェースを示している。これらの実装形態には、異なる機能を有する少なくとも5つの領域がある。図3Aは、これを、メニューバー領域301、左側ペイン302、フローペイン303、プロファイルペイン304、およびデータペイン305として概念的に示している。一部の実装形態では、プロファイルペイン304は、スキーマペインとも称される。一部の実装形態では、「左側ペイン」302の機能は、メニューペイン301の下またはデータペイン305の下などの代替の場所に位置している。 3A and 3B illustrate user interfaces for preparing data according to some implementations. These implementations have at least five regions with different functions. FIG. 3A shows this conceptually as menu bar area 301 , left pane 302 , flow pane 303 , profile pane 304 and data pane 305 . In some implementations, profile pane 304 is also referred to as a schema pane. In some implementations, the functions of the “left pane” 302 are located in alternate locations, such as below the menu pane 301 or below the data pane 305 .

このインターフェースは、ユーザが何をする必要があるかを見て理解することができるように、複数の合理化された調整されたビューをユーザに提供する。この斬新なユーザインターフェースは、ユーザにフローおよびデータの複数のビューを提供し、ユーザがアクションを実行するだけでなく、実行する必要のあるアクションを発見するのにも役立つ。フローペイン303のフローダイアグラムは、アクションを組み合わせて要約し、フローをより読みやすくするものであり、プロファイルペイン304およびデータペイン305の実際のデータのビューとともに調整される。データペイン305は、論理フローの全てのポイントでのデータの代表的なサンプルを提供し、プロファイルペインは、データのドメインのヒストグラムを提供する。 This interface provides the user with multiple streamlined and coordinated views so that the user can see and understand what needs to be done. This novel user interface provides users with multiple views of flows and data, helping users not only perform actions, but also discover actions that need to be performed. The flow diagram in flow pane 303 combines and summarizes the actions to make the flow more readable, and is coordinated with the view of the actual data in profile pane 304 and data pane 305 . A data pane 305 provides a representative sample of the data at every point in the logic flow and a profile pane provides a histogram of the domain of the data.

一部の実装形態では、メニューバー301は、ファイルメニューを有し、ファイルメニューは、新しいデータフロー仕様を作成し、データフロー仕様を保存し、過去に作成されたデータフロー仕様を読み込むためのオプションを備える。場合によっては、フロー仕様はフローと称される。フロー仕様により、1つ以上のデータソースからの入力データを操作してターゲットデータセットを作成する方法が説明される。ターゲットデータセットは典型的に、データ視覚化アプリケーションを使用した後続のデータ分析で使用される。 In some implementations, menu bar 301 has a file menu with options for creating new dataflow specifications, saving dataflow specifications, and loading previously created dataflow specifications. Prepare. A flow specification is sometimes referred to as a flow. A flow specification describes how input data from one or more data sources is manipulated to create a target data set. Target datasets are typically used in subsequent data analysis using data visualization applications.

一部の実装形態では、左側ペイン302は、直近のデータソース接続のリストと、新しいデータソースに接続するためのボタンとを含む。 In some implementations, the left pane 302 includes a list of recent data source connections and a button to connect to new data sources.

一部の実装形態では、フローペイン303は、フロー仕様の視覚的表現(フローダイアグラムまたはフロー)を含む。一部の実装形態では、フローは、データソース、実行される操作、およびフローのターゲット出力を示すノード/リンクダイアグラムである。 In some implementations, the flow pane 303 contains a visual representation of the flow specification (flow diagram or flow). In some implementations, a flow is a node/link diagram that shows the data sources, operations performed, and target outputs of the flow.

一部の実装形態では、フローの一部を宣言型クエリとして扱うことにより、フローを柔軟に実行できる。つまり、ユーザに全ての計算の詳細を指定させるのではなく、ユーザが目的(入力および出力など)を指定する。フローを実行するプロセスは、プランを最適化して、パフォーマンスを向上させる実行ストラテジを選択する。実装形態により、ユーザはこの動作を選択的に禁止して実行を制御することもできる。 Some implementations allow flexible execution of the flow by treating parts of the flow as declarative queries. That is, the user specifies the purpose (inputs and outputs, etc.) rather than having the user specify all the computational details. The process that runs the flow chooses an execution strategy that optimizes the plan and improves performance. Depending on the implementation, the user may also selectively prohibit this action to control its execution.

一部の実装形態では、プロファイルペイン304は、フローペイン303で選択されたノードのスキーマおよび関連する統計および/または視覚化を表示する。一部の実装形態は、同時に複数のノードの選択をサポートするが、他の実装形態は一度に1つのノードのみの選択をサポートする。 In some implementations, profile pane 304 displays the schema and associated statistics and/or visualizations of the node selected in flow pane 303 . Some implementations support selection of multiple nodes at the same time, while other implementations support selection of only one node at a time.

一部の実装形態では、データペイン305は、フローペイン303で選択されたノードの行レベルのデータを表示する。 In some implementations, data pane 305 displays row-level data for the node selected in flow pane 303 .

一部の実装形態では、ユーザはメニューバーの[ファイル]->[新しいフロー]オプションを使用して新しいフローを作成する。ユーザは、データソースをフローに追加することもできる。場合によっては、データソースはリレーショナルデータベースである。場合によっては、1つ以上のデータソースは、CSVファイルまたはスプレッドシートファイルなどのファイルベースである。一部の実装形態では、ユーザは、左側ペイン302のファイル接続アフォーダンスを使用して、ファイルベースのソースをフローに追加する。これにより、ユーザにファイルの選択を求めるファイルダイアログが開く。一部の実装形態では、左側ペイン302はまた、データベース接続アフォーダンスを含み、これは、ユーザがデータベース(例えば、SQLデータベース)に接続することを可能にする。 In some implementations, the user creates a new flow using the File->New Flow option in the menu bar. Users can also add data sources to flows. In some cases, the data source is a relational database. In some cases, one or more of the data sources are file-based, such as CSV files or spreadsheet files. In some implementations, users add file-based sources to the flow using the file connection affordances in the left pane 302 . This opens a file dialog asking the user to select a file. In some implementations, the left pane 302 also includes database connection affordances, which allow the user to connect to databases (eg, SQL databases).

ユーザがフローペイン303でノード(例えば、テーブル)を選択すると、ノードのスキーマがプロファイルペイン304に表示される。一部の実装形態では、プロファイルペイン304は、(例えば、ヒストグラムまたは円グラフとして)フィールドのデータ値の分布などの統計または視覚化を含む。フローペイン303で複数のノードの選択を可能にする実装形態において、選択されたノードの各々のスキーマがプロファイルペイン304に表示される。 When a user selects a node (eg, table) in flow pane 303 , the node's schema is displayed in profile pane 304 . In some implementations, profile pane 304 includes statistics or visualizations such as the distribution of data values for a field (eg, as a histogram or pie chart). In implementations that allow selection of multiple nodes in flow pane 303 , the schema of each of the selected nodes is displayed in profile pane 304 .

また、フローペイン303でノードを選択すると、そのノードのデータがデータペイン305に表示される。データペイン305は、典型的に、行および列としてデータを表示する。 Also, when a node is selected in the flow pane 303 , the data of that node is displayed in the data pane 305 . Data pane 305 typically displays data as rows and columns.

実装形態により、フローペイン303、プロファイルペイン304、またはデータペイン305を使用してフローを容易に編集することができる。例えば、一部の実装形態では、これら3つのペインのいずれかでノード/テーブルの右クリック操作を有効にし、そのテーブルの既存の列に対するスカラー計算に基づいて新しい列を追加する。例えば、スカラー演算は、3つの数値列の合計を計算する数学演算、文字列である2つの列からの文字列データを連結する文字列演算、または(日付がデータソースで文字列として符号化されている場合)文字列の列を日付列に変換する変換演算であり得る。一部の実装形態では、右クリックメニュー(フローペイン303、プロファイルペイン304、またはデータペイン305のテーブル/ノードからアクセス)に「計算フィールドの作成…」というオプションが提供される。このオプションを選択すると、計算を作成するためのダイアログが表示される。一部の実装形態では、計算は、(例えば、集計、カスタム詳細レベル計算、およびテーブル計算を除いて)スカラー計算に制限される。新しい列が作成されると、ユーザインターフェースは、フローペイン303に計算されたノードを追加し、新しいノードをその先行するノードに接続して、この新しいノードを選択する。一部の実装形態では、フローダイアグラムのノードの数が大きくなると、フローペイン303にはスクロールボックスが追加される。一部の実装形態では、フローダイアグラムのノードをグループ化してラベルを付けることができる。これは階層的に表示される(例えば、最初に高レベルのフローを表示し、ドリルダウンして選択したノードの詳細を表示する)。 Depending on the implementation, a flow can be easily edited using the flow pane 303, profile pane 304, or data pane 305. For example, some implementations enable node/table right-click operations in any of these three panes to add new columns based on scalar calculations on existing columns in that table. For example, a scalar operation can be a mathematical operation that computes the sum of three numeric columns, a string operation that concatenates string data from two columns that are strings, or (a date is encoded as a string at the data source). can be a conversion operation that converts a string column to a date string. In some implementations, the right-click menu (accessed from a table/node in flow pane 303, profile pane 304, or data pane 305) provides an option "Create Calculated Field...". Selecting this option brings up a dialog for creating a calculation. In some implementations, calculations are restricted to scalar calculations (with the exception of, for example, aggregations, custom level of detail calculations, and table calculations). When a new column is created, the user interface adds a computed node to the flow pane 303, connects the new node to its predecessor node, and selects this new node. In some implementations, scroll boxes are added to the flow pane 303 as the number of nodes in the flow diagram grows. In some implementations, flow diagram nodes can be grouped and labeled. It is displayed hierarchically (eg, showing high-level flow first, then drilling down to show details of the selected node).

ユーザは、フローペイン303、プロファイルペイン304、またはデータペイン305を操作して(例えば、列を右クリックして[列の削除]オプションを選択することによって)列を削除することもできる。列を削除すると、フローペイン303にノードが追加され、新しいノードが適切に接続され、新しいノードが選択される。 A user can also delete a column by manipulating flow pane 303, profile pane 304, or data pane 305 (eg, by right-clicking on the column and selecting the Delete Column option). Deleting a column adds a node to the flow pane 303, connects the new node appropriately, and selects the new node.

フローペイン303で、ユーザは、ノードを選択し、「名前を付けて出力」を選択して、新しい出力データセットを作成することができる。一部の実装形態では、これは右クリックで実行される。これにより、ユーザがターゲットファイル名およびディレクトリ(またはデータベースおよびテーブル名)を選択できるファイルダイアログが表示される。これを行うと、フローペイン303に新しいノードが追加されるが、実際にはターゲットデータセットは作成されない。一部の実装形態では、ターゲットデータセットには、データを含む最初のファイル(タブローデータ抽出(Tableau Data Extract)またはTDE)と、データファイルを指す対応するインデックスまたはポインタエントリ(タブローデータソース(Tableau Data Source)またはTDS)とを含む2つのコンポーネントがある。 In flow pane 303, the user can select a node and select "output as" to create a new output dataset. In some implementations this is done with a right click. This brings up a file dialog that allows the user to select a target filename and directory (or database and table name). Doing this adds a new node to the flow pane 303 but does not actually create the target dataset. In some implementations, the target dataset includes the first file containing the data (Tableau Data Extract or TDE) and a corresponding index or pointer entry pointing to the data file (Tableau Data Source). There are two components including Source) or TDS).

実際の出力データファイルは、フローの実行時に作成される。一部の実装形態では、ユーザは、メニューバー301から「ファイル->フローの実行」を選択してフローを実行する。1つのフローで複数の出力データファイルを生成できることに留意されたい。一部の実装形態では、フローダイアグラムにより、実行時に視覚的なフィードバックが提供される。 The actual output data file is created when the flow runs. In some implementations, the user selects “File->Run Flow” from menu bar 301 to run the flow. Note that one flow can generate multiple output data files. In some implementations, flow diagrams provide visual feedback at runtime.

一部の実装形態では、メニューバー301には、「ファイル」メニューに「保存」または「名前を付けて保存」するオプションが含まれ、これにより、ユーザは、フローを保存することができる。一部の実装形態では、フローは「.loom」ファイルとして保存される。このファイルには、読み込み時にフローを再作成するために必要な全てのものが含まれている。フローが保存されると、後で「ファイル」メニューの「読み込み」メニューオプションを使用してリロードできる。これにより、ファイルピッカーダイアログが表示され、ユーザは過去のフローを読み込むことができる。 In some implementations, the menu bar 301 includes a "Save" or "Save As" option in the "File" menu, which allows the user to save the flow. In some implementations, flows are saved as ".loom" files. This file contains everything needed to recreate the flow on load. Once a flow is saved, it can be reloaded later using the Load menu option in the File menu. This will bring up a file picker dialog allowing the user to load past flows.

図3Bは、データプレパレーション用のユーザインターフェースを示すものであり、ペインの各々のユーザインターフェース要素を示している。メニューバー311には、ファイルメニューおよび編集メニューなどの1つ以上のメニューが含まれる。編集メニューが利用可能となっているが、フローペイン313、プロファイルペイン314、またはデータペイン315とインタラクションを有することによって、フローへのさらなる変更が実行される。 FIG. 3B shows a user interface for data preparation, showing user interface elements for each of the panes. Menu bar 311 contains one or more menus, such as a file menu and an edit menu. Although an edit menu is available, further changes to the flow are performed by having interaction with the flow pane 313, profile pane 314, or data pane 315. FIG.

一部の実装形態では、左側ペイン312には、データソースパレット/セレクタが含まれ、これには、データを発見して接続するためのアフォーダンスが含まれる。コネクタのセットには、キューブを含む抽出専用コネクタが含まれている。実装形態は、カスタムSQL式を、それをサポートする任意のデータソースに発行できる。 In some implementations, the left pane 312 includes a data source palette/selector, which includes affordances for discovering and connecting to data. A set of connectors includes an extract-only connector containing a cube. Implementations can publish custom SQL expressions to any data source that supports it.

左側ペイン312はまた、フローに配置され得る操作を表示する操作パレットを含む。これには、任意の結合(任意の型の結合および様々な述語を用いた結合)、ユニオン、ピボット、列の名前変更および制限、スカラー計算の射影、フィルタ、集計、データ型変換、データ解析、合体、マージ、分割、集計、値の置換、ならびにサンプリングが含まれる。一部の実装形態では、セットの作成(例えば、データフィールドのデータ値をセットに分割する)、ビニング(例えば、データフィールドの数値データ値を範囲のセットにグループ化する)、およびテーブル計算(例えば、行のデータ値だけでなく、テーブル内の他のデータ値にも依存する各行のデータ値(例えば、全体の割合)を計算する)を行う演算子もサポートしている。 The left pane 312 also contains an operations palette that displays operations that can be placed in a flow. This includes arbitrary joins (joins of any type and joins with various predicates), unions, pivots, column renaming and restrictions, projection of scalar calculations, filters, aggregations, data type conversions, data parsing, Includes coalescing, merging, splitting, aggregation, value replacement, and sampling. In some implementations, set creation (e.g., dividing data values of a data field into sets), binning (e.g., grouping numeric data values of a data field into sets of ranges), and table calculations (e.g. , which calculates the data value of each row (e.g. percentage of the total) that depends not only on the row's data value, but also on other data values in the table.

左側ペイン312はまた、全体的または部分的に現在のフローに組み込み得る他のフローのパレットを含む。これにより、ユーザは、フローのコンポーネントを再利用して新しいフローを作成することができる。例えば、10個のステップの組み合わせを使用して特定の型の入力をスクラブするフローの一部が作成された場合、その10個のステップのフロー部分を保存して、同じフローまたは完全に別のフローで再利用することができる。 Left pane 312 also contains a palette of other flows that may be incorporated in whole or in part into the current flow. This allows users to reuse flow components to create new flows. For example, if a part of a flow is created that uses a combination of 10 steps to scrub for a particular type of input, you can save that 10-step flow part and use it in the same flow or in a completely different Can be reused in flows.

フローペイン313には、現在のフローの視覚的表現(例えば、ノード/リンクフローダイアグラム)323が表示される。フローペイン313により、プロセスのドキュメント化に役立つフローの概要が提供される。既存の製品では、フローが非常に複雑であるため、理解が妨げられるものが多い。開示された実装形態は、ノードを合体させることで理解を促進し、全体的なフローをより単純かつ簡潔に保つ。上記のように、ノードの数が増えると、実装形態は典型的に、スクロールボックスを追加する。スクロールバーの必要性は、コンテナノードとも称されるスーパーノードに複数の関連ノードを合体させることによって削減される。これにより、ユーザは、フロー全体をより概念的に見ることができ、必要な場合にのみ詳細を掘り下げることができる。一部の実装形態では、「スーパーノード」が展開されると、フローペイン313は、スーパーノード内のノードのみを示し、フローペイン313は、見出しを有し、この見出しにより、フローのどの部分が表示されているかが識別される。実装形態は典型的に、複数の階層レベルを有効にする。複雑なフローには、複数のレベルのノードのネストが含まれる可能性がある。 Flow pane 313 displays a visual representation (eg, node/link flow diagram) 323 of the current flow. A flow pane 313 provides an overview of the flow to help document the process. Many existing products have very complicated flows that make it hard to understand. The disclosed implementation facilitates comprehension by coalescing nodes, keeping the overall flow simpler and more concise. As noted above, implementations typically add scroll boxes as the number of nodes increases. The need for scrollbars is reduced by coalescing multiple related nodes into supernodes, also called container nodes. This allows the user to see the overall flow more conceptually and drill down into details only when necessary. In some implementations, when a "supernode" is expanded, the flow pane 313 shows only the nodes within the supernode, and the flow pane 313 has a heading that indicates which part of the flow Identified as being displayed. Implementations typically enable multiple levels of hierarchy. Complex flows can include multiple levels of node nesting.

上記のように、プロファイルペイン314は、フローペイン313において現在選択されている単一のノード(または複数のノード)のデータに関するスキーマ情報を含む。ここに示されているように、スキーマ情報は、フィールドの各々のデータ分布のヒストグラム324など、データに関する統計情報を提供する。ユーザは、プロファイルペインと直接対話して、(例えば、そのデータフィールドの値に基づいてデータの行をフィルタ処理するためのデータフィールドを選択することによって)フロー323を変更することができる。プロファイルペイン314はまた、現在選択されている単一のノード(または複数のノード)に関する関連データ、およびユーザの作業を導く視覚化をユーザに提供する。例えば、ヒストグラム324は、各列のドメインの分布を示している。一部の実装形態では、ブラッシングを使用して、これらのドメインが互いにどのようにインタラクションを有するかを示す。 As noted above, profile pane 314 contains schema information about the data for the single node (or nodes) currently selected in flow pane 313 . As shown here, the schema information provides statistical information about the data, such as a histogram 324 of the data distribution for each of the fields. A user can interact directly with the profile pane to modify flow 323 (eg, by selecting a data field to filter rows of data based on the value of that data field). Profile pane 314 also provides the user with relevant data about the currently selected single node (or nodes) and visualizations that guide the user's work. For example, histogram 324 shows the distribution of domains in each column. In some implementations, brushing is used to indicate how these domains have interactions with each other.

ここでの例は、ユーザがフロー内のデータを直接操作し得るようにすることで、プロセスが典型的な実装形態とどのように異なるかを示している。データの特定の行をフィルタ処理する2つの代替方法を検討する。この場合、ユーザはカリフォルニア州を検討対象から除外したいと考えている。一般的なツールを使用して、ユーザは、「フィルタ」ノードを選択し、フィルタをフローの特定の場所に配置してから、ダイアログボックスを表示し、「state_name<>’CA’」などの計算式を入力する。ここに開示された実装形態では、ユーザは、プロファイルペイン314(例えば、フィールド値「CA」およびそのフィールド値を有する行数を示す)およびデータペイン315(例えば、state_nameの値として「CA」を有する個々の行)においてデータ値を見ることができる。一部の実装形態では、ユーザは、プロファイルペイン314(またはデータペイン315)の州の名称のリストで[CA]を右クリックし、ドロップダウンから[除外]を選択できる。ユーザは、データと対話するフロー要素ではなく、データ自体と対話する。実装形態により、計算、結合、ユニオン、集計などに同様の機能が提供される。このアプローチの別の利点は、結果が直ちに得られることである。「CA」がフィルタ処理により除外されると、フィルタは直ちに適用される。操作の完了に時間がかかる場合、操作は非同期で実行され、ユーザは、ジョブがバックグラウンドで実行されている間も作業を続行することができる。 The example here shows how the process differs from typical implementations by allowing the user to directly manipulate the data in the flow. Consider two alternative ways to filter specific rows of data. In this case, the user wants to exclude the state of California from consideration. Using common tools, the user selects the 'filter' node, places the filter at a specific location in the flow, then brings up a dialog box to allow calculations such as 'state_name<>'CA'' Enter an expression. In the implementations disclosed herein, a user can view a profile pane 314 (e.g., showing field value "CA" and the number of rows with that field value) and a data pane 315 (e.g., having "CA" as the value of state_name). You can see the data values in the individual rows). In some implementations, the user can right-click CA in the list of state names in profile pane 314 (or data pane 315) and select Exclude from the dropdown. The user interacts with the data itself rather than the flow elements interacting with the data. Implementations provide similar functionality for calculations, joins, unions, aggregations, etc. Another advantage of this approach is the immediate results. If "CA" is filtered out, the filter is applied immediately. If the operation takes a long time to complete, the operation is performed asynchronously and the user can continue working while the job is running in the background.

データペイン315は、フローペイン313において選択されたノード(複数可)に対応するデータの行を表示する。列315の各々は、データフィールドのうちの1つに対応する。ユーザは、データペイン内のデータと直接対話して、フローペイン313内のフロー323を変更することができる。ユーザは、データペインを直接操作して、個々のフィールド値を変更することもできる。一部の実装形態では、ユーザが1つのフィールド値に変更を加えると、ユーザインターフェースは、同じ列の他の全ての値に同じ変更を適用し、この値(またはパターン)は、ユーザが変更したばかりの値と一致する。例えば、ユーザがStateデータ列の1つのフィールド値に対して「WA」を「Washington」に変更した場合、一部の実装形態では、同じ列の他の全ての「WA」値が「Washington」に更新される。一部の実装形態では、さらに列が更新されて、列内の州の省略形が完全な州の名称に置き換えられる(例えば、「OR」が「Oregon」に置き換えられる)。一部の実装形態では、列全体にグローバルな変更を適用する前に、ユーザに確認を求めるプロンプトが表示される。一部の実装形態では、1つの列の1つの値への変更を、他の列にも(自動で、または疑似的に自動で)適用することができる。例えば、データソースには、居住地の州および請求先の州の両方が含まれる場合がある。次に、州のフォーマットの変更を両方に適用することができる。 Data pane 315 displays rows of data corresponding to the node(s) selected in flow pane 313 . Each column 315 corresponds to one of the data fields. A user can directly interact with the data in the data pane to change the flow 323 in the flow pane 313 . The user can also manipulate the data pane directly to change individual field values. In some implementations, when the user makes a change to one field value, the user interface applies the same change to all other values in the same column, and this value (or pattern) is Matches just the value. For example, if a user changes "WA" to "Washington" for one field value in the State data column, in some implementations all other "WA" values in the same column will be changed to "Washington". Updated. In some implementations, the column is further updated to replace state abbreviations in the column with full state names (eg, replace "OR" with "Oregon"). In some implementations, the user is prompted for confirmation before applying global changes to the entire column. In some implementations, a change to one value in one column can be applied (automatically or pseudo-automatically) to other columns as well. For example, a data source may include both state of residence and state of billing. Then the state format change can be applied to both.

データペイン315内のデータのサンプリングは、ユーザに貴重な情報を提供するために選択される。例えば、一部の実装形態では、データフィールド(外れ値を含む)の値の全範囲を表示する行が選択される。別の例として、ユーザが2つ以上のデータテーブルを有するノードを選択した場合、一部の実装形態では、2つのテーブルの結合を支援する行が選択される。データペイン315に表示される行は、2つのテーブル間で一致する行および一致しない行の両方を表示するように選択される。これは、結合に使用するフィールドを決定し、かつ/または使用する結合型(例えば、内部結合、左外部結合、右外部結合、または完全外部結合)を決定するのに役立つ。 The sampling of data in data pane 315 is selected to provide valuable information to the user. For example, in some implementations, rows are selected that display the full range of values for the data field (including outliers). As another example, if the user selects a node with more than one data table, in some implementations rows are selected that support joining the two tables. The rows displayed in data pane 315 are selected to display both matching and non-matching rows between the two tables. This helps determine which fields to use for the join and/or which type of join to use (eg, inner join, left outer join, right outer join, or full outer join).

図3Cは、ユーザインターフェースに表示される機能の一部および機能によって表示されるものを示している。上記の図3Bに示されているように、フローダイアグラム323は、常にフローペイン313に表示されている。プロファイルペイン314およびデータペイン315も常に示されているが、これらのペインの内容は、フローペイン313で選択されているノード(複数可)に基づいて変化する。場合によっては、フローペイン313でノードが選択されると、1つ以上のノード固有のペインが表示される(図3Aまたは図3Bには図示せず)。表示されると、ノード固有のペインが他のペインに追加される。一部の実装形態では、ノード固有のペインは、移動可能なフローティングポップアップとして表示される。一部の実装形態では、ノード固有のペインがユーザインターフェース内の固定された場所に表示される。上記のように、左側ペイン312は、データソースを選択または開くためのデータソースパレット/チューザ、ならびにフローダイアグラム323に適用され得る操作を選択するための操作パレットを含む。一部の実装形態はまた、「他のフローパレット」を含み、これにより、ユーザは、別のフローの全てまたは一部を現在のフロー323にインポートすることが可能となる。 FIG. 3C shows some of the features displayed in the user interface and what the features display. As shown in FIG. 3B above, flow diagram 323 is always displayed in flow pane 313 . Profile pane 314 and data pane 315 are also always shown, but the content of these panes changes based on the node(s) selected in flow pane 313 . In some cases, when a node is selected in flow pane 313, one or more node-specific panes are displayed (not shown in Figures 3A or 3B). When displayed, node-specific panes are added to other panes. In some implementations, node-specific panes are displayed as floating popups that can be moved. In some implementations, node-specific panes are displayed at fixed locations within the user interface. As noted above, left pane 312 includes a data source palette/chooser for selecting or opening a data source, as well as an operations palette for selecting operations that may be applied to flow diagram 323 . Some implementations also include an “Other Flows Palette” that allows users to import all or part of another flow into the current flow 323 .

フローダイアグラム323内の異なるノードは、異なるタスクを実行し、このため、ノードの内部情報は異なる。加えて、一部の実装形態では、ノードが選択されているかどうかに応じて異なる情報が表示される。例えば、選択されていないノードには簡単な説明またはラベルが含まれるが、選択されているノードにはより詳細な情報が表示される。一部の実装形態では、操作のステータスも表示される。例えば、一部の実装形態は、ノードの操作が実行されたかどうかに応じて、フローダイアグラム323内のノードを異なるように表示する。加えて、操作パレット内の一部の実装形態では、現在選択されているノードで使用できるかどうかによって、操作の表示が異なる。 Different nodes in the flow diagram 323 perform different tasks and therefore the internal information of the nodes is different. Additionally, in some implementations, different information is displayed depending on whether a node is selected. For example, unselected nodes contain a brief description or label, while selected nodes display more detailed information. In some implementations, the status of the operation is also displayed. For example, some implementations display nodes in flow diagram 323 differently depending on whether an operation on the node has been performed. Additionally, in some implementations within the operations palette, operations are displayed differently depending on whether they are available on the currently selected node.

フローダイアグラム323は、データがどのように処理されているかを理解するための容易で視覚的な方法を提供するものであり、ユーザにとって論理的な方法でプロセスを編成する。ユーザは、フローペイン313で直接フローダイアグラム323を編集することができるが、操作への変更は、典型的に、より迅速な方法で行われ、プロファイルペイン314またはデータペイン315内のデータまたはスキーマが直接操作される(例えば、プロファイルペイン内のデータフィールドの統計を右クリックして、フローに列を追加または削除する)。 Flow diagram 323 provides an easy, visual way to understand how data is being processed, and organizes the process in a logical way for the user. Although the user can edit the flow diagram 323 directly in the flow pane 313, changes to operations are typically made in a more rapid manner and the data or schema in the profile pane 314 or data pane 315 are Directly manipulated (for example, right-clicking a data field's statistics in the profile pane to add or remove columns from the flow).

ユーザは、軽微な操作ごとにノードを表示するのではなく、操作を、少数のより重要なノードにグループ化できる。例えば、結合およびそれに続く2つの列の削除は、3つの個別のノードではなく、1つのノードに実装できる。 Instead of displaying a node for each minor operation, the user can group operations into a few more important nodes. For example, a join followed by deletion of two columns can be implemented in one node instead of three separate nodes.

フローペイン313内で、ユーザは、以下を含む様々なタスクを実行することができる。
●ノード選択の変更。これにより、残りのユーザインターフェースに表示されるデータが決まる。
●ピンフロー操作。これにより、ユーザは、フローの一部を最初に実行する必要があるものとして、順序を変更できないように指定できる。
●分割および組み合わせ操作。ユーザは、進行中の論理モデルに一致するように操作を容易に再編成できる。例えば、ユーザは「病院コードの正規化」と称される1つのノードを作成したい場合がある。このノードには、多くの操作および特殊なケースが含まれている。ユーザは、最初に個々の操作を作成し、次に個々の操作を表すノードをスーパーノード「病院コードの正規化」と合体することができる。逆に、多くの個別の操作を含むノードを作成した後、ユーザは、(例えば、より一般的に再利用できるノードを作成するために)1つ以上の操作を分割することを選択することができる。
Within flow pane 313, the user can perform various tasks, including:
● Change node selection. This determines the data displayed in the rest of the user interface.
●Pin flow operation. This allows the user to specify that part of the flow should be executed first and cannot be reordered.
● Split and combine operations. The user can easily reorganize the operations to match the ongoing logical model. For example, a user may want to create one node called "Hospital Code Normalization". This node contains many operations and special cases. A user can first create an individual operation and then coalesce the nodes representing the individual operations with the supernode "Hospital Code Normalization". Conversely, after creating a node that contains many individual operations, the user may choose to split one or more operations (e.g., to create a more commonly reusable node). can.

プロファイルペイン314により、変換の結果が期待どおりかどうかをユーザが理解するための迅速な方法が提供される。外れ値および誤り値は、典型的に、ノード内の他の両方の値との比較に基づいて、または他のノードの値の比較に基づいて、視覚的に「ポップアウト」される。プロファイルペインは、問題の原因が誤った変換またはダーティデータであるかどうかに関係なく、ユーザがデータの問題を特定するのに役立つ。プロファイルペインでは、ユーザが不良データを見出すのに役立つだけでなく、直接対話して発見された問題を修正することもできる。一部の実装形態では、プロファイルペイン314は非同期的に更新される。フローペインでノードが選択されると、ユーザインターフェースにより、時間の経過とともに改善される部分値(データ値分布ヒストグラムなど)の入力が開始される。一部の実装形態では、プロファイルペインには、完了したかどうかをユーザに警告するためのインジケータが含まれている。非常に大きなデータセットでは、一部の実装形態は、サンプルデータのみに基づいてプロファイルを構築する。 Profile pane 314 provides a quick way for the user to understand if the results of the conversion are as expected. Outliers and erroneous values are typically visually "popped out" based on comparisons with both other values within a node, or based on comparisons of values of other nodes. The profile pane helps users identify data problems, whether the problem is caused by incorrect conversions or dirty data. The profile pane not only helps users find bad data, but also allows them to directly interact and fix any problems found. In some implementations, profile pane 314 is updated asynchronously. When a node is selected in the flow pane, the user interface initiates entry of partial values (such as data value distribution histograms) that improve over time. In some implementations, the profile pane includes an indicator to alert the user when completed. For very large datasets, some implementations build profiles based on sample data only.

プロファイルペイン314内で、ユーザは、以下を含む様々なタスクを実行することができる。
●データ範囲および相関関係の調査。ユーザは、プロファイルペイン314を使用して、直接ナビゲーションを使用して特定のデータまたは列の関係性に着目することができる。
●データまたはデータ範囲のフィルタ処理。ユーザは、直接の対話を通じてフロー323にフィルタ操作を追加することができる。これにより、フローペイン313に新しいノードが作成される。
●データの変換。ユーザは、ある範囲から別の値に値をマッピングするために、プロファイルペイン314と直接対話することができる。これにより、フローペイン313に新しいノードが作成される。
Within profile pane 314, the user can perform various tasks, including:
● Investigate data coverage and correlations. A user can use the profile pane 314 to focus on specific data or column relationships using direct navigation.
● Filter data or data ranges. A user can add filtering operations to flow 323 through direct interaction. This creates a new node in the flow pane 313 .
● Data conversion. A user can interact directly with the profile pane 314 to map values from one range to another. This creates a new node in the flow pane 313 .

データペイン315により、ユーザがフローから生じる行を表示および変更するための方法が提供される。典型的に、データペインにより、選択したノードに対応する行のサンプリングが選択される(例えば、100万行ではなく、10、50、または100行のサンプル)。一部の実装形態では、様々な機能を表示するために行がサンプリングされる。一部の実装形態では、n行ごとなど、行が統計的にサンプリングされる。 Data pane 315 provides a way for the user to view and modify the rows resulting from the flow. Typically, the data pane selects a sampling of rows corresponding to the selected node (eg, samples of 10, 50, or 100 rows instead of 1 million rows). In some implementations, rows are sampled to display various functions. In some implementations, rows are statistically sampled, such as every n rows.

データペイン315は、典型的に、(例えば、ソースデータがクリーンでない場合)ユーザがデータをクリーンアップする場所である。プロファイルペインと同様に、データペインは非同期で更新される。ノードが最初に選択されると、データペイン315の行が表示され始め、時間が経つにつれてサンプリングが改善する。大部分のデータセットには、(データセットが小さい場合を除き)ここで使用することができるデータのサブセットしか存在しない。 Data pane 315 is typically where the user cleans up data (eg, if the source data is not clean). Like the profile pane, the data pane updates asynchronously. When a node is first selected, the rows of data pane 315 begin to appear, and the sampling improves over time. For most datasets there is only a subset of the data that can be used here (unless the dataset is small).

データペイン315内で、ユーザは、以下を含む様々なタスクを実行することができる。
●ナビゲーション用の並べ替え。ユーザは、列に基づいてデータペインのデータを並べ替えることができるが、フローには影響しない。目的は、データペインのデータのナビゲートを支援することである。
●ナビゲーション用のフィルタ処理。ユーザは、ビュー内のデータをフィルタ処理することができるが、フローにフィルタは追加されない。
●フローにフィルタを追加。ユーザは、フローに適用するフィルタを作成することもできる。例えば、ユーザは特定のデータフィールドの個々のデータ値を選択し、その値に従ってデータをフィルタ処理するアクションを実行することができる(例えば、その値を除外するか、その値のみを含める)。この場合、ユーザインタラクションにより、データフロー323に新しいノードが作成される。一部の実装形態では、ユーザが1つの列で複数のデータ値を選択し、選択した値のセットに基づいてフィルタを作成することができる(例えば、セットを除外するか、そのセットのみに制限する)。
●行データの変更。ユーザは行を直接変更することができる。例えば、特定の行の特定のフィールドのデータ値を3から4に変更する。
●ある値を別の値へのマッピング。ユーザは、特定の列のデータ値を変更し、その変更を伝播させて、特定の列のその値を有する全ての行を変更することができる。例えば、州を表す列全体の「N.Y.」を「NY」に置き換える。
●列の分割。例えば、日付が「2015年11月14日」のようにフォーマットされていることをユーザが確認した場合、ユーザはこのフィールドを日、月、年の3つの別々のフィールドに分割することができる。
●列のマージ。ユーザは、2つ以上の列をマージして、単一の組み合わされた列を作成することができる。
Within data pane 315, the user can perform various tasks, including:
● Sorting for navigation. Users can sort the data in the data pane based on columns, but it doesn't affect the flow. Its purpose is to help navigate the data in the data pane.
● Filtering for navigation. The user can filter the data in the view, but no filters are added to the flow.
● Add filters to the flow. Users can also create filters to apply to flows. For example, a user can select an individual data value for a particular data field and perform an action that filters the data according to that value (eg, exclude that value or include only that value). In this case, user interaction creates a new node in data flow 323 . Some implementations allow the user to select multiple data values in a column and create a filter based on the set of selected values (e.g. exclude a set or restrict to only that set). do).
● Change row data. The user can change the row directly. For example, change the data value of a particular field in a particular row from 3 to 4.
● Mapping one value to another. A user can change the data value in a particular column and have the change propagated to change all rows with that value in the particular column. For example, replace "NY" with "NY" throughout the state column.
● Column splitting. For example, if the user sees the date formatted as "November 14, 2015", the user can split this field into three separate fields for day, month, and year.
● Column merging. A user can merge two or more columns to create a single combined column.

ノード固有のペインには、フロー内の選択したノードに固有の情報が表示される。多くの場合、ノード固有のペインは必要ないため、ユーザインターフェースは典型的に、この用途専用のユーザインターフェースを備えた領域を指定しない。代わりに、ノード固有のペインが必要に応じて表示され、典型的に、ユーザインターフェースの他の領域にフローティングするポップアップが使用される。例えば、一部の実装形態では、ノード固有のペインを使用して、結合、ユニオン、ピボット、ピボット解除、Pythonスクリプトの実行、ログファイルの解析、またはJSONオブジェクトの表形式への変換に特定のユーザインターフェースが提供される。 Node-specific panes display information specific to the selected node in the flow. Since node-specific panes are often not needed, the user interface typically does not specify an area with the user interface dedicated to this purpose. Instead, node-specific panes are displayed as needed, typically using pop-ups that float to other areas of the user interface. For example, some implementations use node-specific panes to provide specific user An interface is provided.

データソースパレット/チューザを使用すると、ユーザは、様々なデータソースからデータを取り込むことができる。一部の実装形態では、データソースパレット/チューザは左側ペイン312にある。ユーザは、データソースパレット/チューザを使用して、次のような様々なタスクを実行することができる。
●データソース接続の確立。これにより、ユーザは、SQLデータベース、CSVまたはスプレッドシートなどのデータファイル、非リレーショナルデータベース、Webサービス、他のデータソースなどのデータソースからデータをプルすることができる。
●接続プロパティの設定。ユーザは、データソースへの接続に必要な資格情報および他のプロパティを指定することができる。一部のデータソースの場合、プロパティには特定のデータ(例えば、データベース内の特定のテーブルまたはワークブックファイルからの特定のシート)の選択が含まれる。
The Data Source Palette/Chooser allows the user to bring in data from various data sources. In some implementations, the data source palette/chooser is in the left pane 312 . A user can use the data source palette/chooser to perform various tasks such as:
● Establishing a data source connection. This allows users to pull data from data sources such as SQL databases, data files such as CSV or spreadsheets, non-relational databases, web services, and other data sources.
● Setting connection properties. A user can specify credentials and other properties required to connect to a data source. For some data sources, properties include selection of specific data (eg, a specific table in a database or a specific sheet from a workbook file).

多くの場合、上記のように、ユーザは、プロファイルペイン314とデータペイン315とのユーザインタラクションに基づいて、フロー内のノードに対する操作を呼び出す。加えて、左側ペイン312により、操作パレットが提供され、これにより、ユーザが特定の操作を呼び出すことが可能となる。例えば、一部の実装形態では、操作パレットに「Pythonスクリプトを呼び出す」オプションが含まれている。加えて、ユーザが再利用するノードを作成するときに、操作パレットで使用可能な操作としてそれらを保存することができる。操作パレットにより、(ユーザ定義の操作を含む)既知の操作のリストが提供され、これにより、ユーザがユーザインターフェースジェスチャ(ドラッグアンドドロップなど)を使用して操作をフローに組み込むことが可能となる。 In many cases, as described above, users invoke operations on nodes in the flow based on user interaction with profile pane 314 and data pane 315 . In addition, left pane 312 provides an operations palette that allows the user to invoke specific operations. For example, in some implementations, the Actions Palette includes a "Call Python Script" option. Additionally, as users create nodes for reuse, they can be saved as available operations in the operations palette. The Operations Palette provides a list of known operations (including user-defined operations), allowing users to incorporate operations into flows using user interface gestures (such as drag and drop).

一部の実装形態では、他のフローパレット/チューザが提供される。これにより、ユーザは、自分が作成したフローまたは他人が作成したフローを容易に再利用することができる。他のフローパレットは、ユーザが開始または組み込むことができる他のフローのリストを提供する。一部の実装形態では、フロー全体の選択に加えて、他のフローの一部の選択もサポートされている。ユーザは、ドラッグおよびドロップなどのユーザインターフェースジェスチャを使用して、他のフローを組み込むことができる。 Other flow palettes/choosers are provided in some implementations. This allows users to easily reuse flows that they have created or flows that have been created by others. The Other Flows palette provides a list of other flows that the user can initiate or incorporate. Some implementations support selection of parts of other flows as well as selection of entire flows. Users can incorporate other flows using user interface gestures such as drag and drop.

ノード内部では、ノードで実行されている操作が正確に指定される。ユーザがフローを「リファクタリング」するか、またはフローをより詳細に理解するのに十分な情報が存在する。ユーザは、ノード内にあるもの(例えば、実行される操作)を正確に表示でき、操作をノードから別のノードに移動できる。 Inside the node, the exact operation being performed on the node is specified. There is enough information for the user to "refactor" the flow or understand it in more detail. The user can see exactly what is inside the node (eg, the operation being performed) and can move the operation from one node to another.

一部の実装形態には、ユーザが複数のフローを1つの「プロジェクト」または「ワークブック」にグループ化することができるプロジェクトモデルが含まれている。複雑なフローの場合、ユーザは、フロー全体をより理解しやすいコンポーネントに分割することができる。 Some implementations include a project model that allows users to group multiple flows into one "project" or "workbook." For complex flows, the user can divide the entire flow into more understandable components.

一部の実装形態では、操作ステータスは左側ペイン312に表示される。多くの操作はバックグラウンドで非同期に実行されるため、操作ステータス領域は、進行中の操作および進行状況(1%完了、50%完了、100%完了など)をユーザに示す。操作ステータスにより、バックグラウンドで実行されている操作が示され、ユーザは、操作をキャンセルすることができ、データを更新することができ、部分的な結果を最後まで実行することができるようになる。 In some implementations, operational status is displayed in left pane 312 . Since many operations run asynchronously in the background, the operation status area shows the user the ongoing operation and progress (1% complete, 50% complete, 100% complete, etc.). Operation status indicates operations that are running in the background and allows the user to cancel operations, update data, and run partial results to completion. .

図3Bのフロー323などのフローは、元のデータソースから変換を介してターゲットデータセットに通過する行のパイプラインを表す。例えば、図3Dは、フロー338の簡単な例を示している。このフローは、車両に関する交通事故に基づいている。関連データは、SQLデータベースの事故テーブルおよび車両テーブルに保存される。このフローでは、第1のノード340が事故テーブルからデータを読み取り、第2のノード344が車両テーブルからデータを読み取る。この例では、事故テーブルが正規化され(342)、1つ以上のキーフィールドが識別される(342)。同様に、車両データに対して1つ以上のキーフィールドが識別される(346)。2つのテーブルは共有キーを使用して結合され(348)、結果はターゲットデータセットに書き込まれる(350)。事故テーブルおよび車両テーブルの両方が同じSQLデータベースにある場合、別の方法として、1つのクエリで2つのテーブルからデータを読み取る単一のノードを作成する。クエリでは、選択するデータフィールドと、データを1つ以上のフィルタ(WHERE句など)で制限するかどうかを指定することができる。場合によっては、テーブルの結合に使用されるデータを変更する必要があるため、フロー338に示されているように、データが取得され、ローカルで結合される。例えば、車両テーブルの主キーは整数データ型であり得るのに対し、事故テーブルはゼロが埋め込まれた文字フィールドを使用して関係する車両を指定する場合がある。 A flow, such as flow 323 in FIG. 3B, represents a pipeline of rows passing from an original data source, through transformations, to a target data set. For example, FIG. 3D shows a simple example of flow 338 . This flow is based on traffic accidents involving vehicles. The relevant data is stored in the accident and vehicle tables of the SQL database. In this flow, a first node 340 reads data from the incident table and a second node 344 reads data from the vehicle table. In this example, the incident table is normalized (342) and one or more key fields are identified (342). Similarly, one or more key fields are identified for vehicle data (346). The two tables are joined using a shared key (348) and the result is written to the target dataset (350). If both the accident table and the vehicle table are in the same SQL database, another way is to create a single node that reads data from the two tables in one query. A query can specify which data fields to select and whether to restrict the data with one or more filters (such as a WHERE clause). In some cases, it may be necessary to change the data used to join the tables, so the data is retrieved and joined locally, as shown in flow 338 . For example, the primary key of the vehicle table may be an integer data type, while the accident table may use zero-padded character fields to specify the vehicle involved.

図3Dに示すようなフローの抽象化は、大部分のETLおよびデータプレパレーション製品に共通である。このフローモデルにより、ユーザは変換を論理的に制御することができる。かかるフローは、概して命令型プログラムとして解釈され、プラットフォームによる変更をほとんど行わずに、またはまったく行わずに実行される。つまり、ユーザは、実行に対する物理的な制御を定義するための特定の詳細を提供したことになる。例えば、このフローで動作する一般的なETLシステムにより、指定されたとおりにデータベースから2つのテーブルがプルダウンされ、指定されたとおりにデータが整形され、ETLエンジンでテーブルを結合して、結果がターゲットデータセットに書き込まれる。物理プランを完全に制御することは、有用であり得るが、パフォーマンスを向上させるためにプランを変更または最適化(例えば、SQLサーバーで前述のフローを実行)するシステムの機能が排除される。多くの場合、顧客は実行の詳細を制御する必要がないため、本実装形態により、操作を宣言的に表現することができる。 The flow abstraction as shown in Figure 3D is common to most ETL and data preparation products. This flow model allows the user to logically control the transformation. Such flows are generally interpreted as imperative programs and are executed with little or no platform modification. That is, the user has provided specific details to define the physical controls over execution. For example, a typical ETL system working in this flow pulls down two tables from a database as specified, shapes the data as specified, joins the tables in the ETL engine, and the result is the target written to the dataset. While having full control over the physical plan can be useful, it eliminates the system's ability to modify or optimize the plan (eg, run the aforementioned flow in SQL Server) to improve performance. Since in many cases the customer does not need to control the details of the execution, this implementation allows operations to be expressed declaratively.

ここでの一部の実装形態は、完全な宣言型クエリから命令型プログラムまでの範囲に及ぶ。一部の実装形態では、内部分析クエリ言語(AQL)およびフェデレーションエバリュエータを利用する。デフォルトでは、フローは可能な限り単一の宣言型クエリ仕様として解釈される。この宣言型クエリは、AQLに変換され、クエリエバリュエータに渡される。クエリエバリュエータは、最終的に演算子を分割し、分散して実行する。上記の図3Dの例では、フロー全体を1つのクエリとしてキャストすることができる。両方のテーブルが同じサーバーからのものである場合、この操作全体がリモートデータベースにプッシュされる可能性が高く、パフォーマンスが大幅に向上する。この柔軟性により、最適化および配布フローの実行が可能になるだけでなく、ライブデータソース(例えば、データウェアハウスだけでなくトランザクションデータベースから)に対するクエリの実行も可能になる。 Some implementations here range from fully declarative queries to imperative programs. Some implementations utilize an internal analytical query language (AQL) and federated evaluators. By default, flows are interpreted as a single declarative query specification whenever possible. This declarative query is converted to AQL and passed to the query evaluator. The query evaluator eventually splits the operators and executes them in a distributed manner. In the example of Figure 3D above, the entire flow can be cast as one query. If both tables are from the same server, this entire operation will likely be pushed to a remote database, greatly improving performance. This flexibility not only allows the execution of optimization and distribution flows, but also allows the execution of queries against live data sources (eg, from transactional databases as well as data warehouses).

ユーザが(パフォーマンス上の理由などのために)フローの実際の実行の順序を制御したい場合、ユーザは操作を固定することができる。固定することによって、フロー実行モジュールは、プランのそのポイントを超えて操作を移動しないように指示される。場合によっては、ユーザは、(例えば、フローのオーサリングまたはデバッグ中など)一時的に順序を極端に制御したい場合がある。この場合、全ての演算子を固定することができ、フローはユーザが指定した順序で正確に実行される。 If the user wants to control the actual order of execution of the flow (for performance reasons etc.), the user can fix the operation. By pinning, the flow execution module is instructed not to move the operation past that point in the plan. In some cases, a user may temporarily want extreme control over the order (eg, while authoring or debugging a flow). In this case, all operators can be fixed and the flow will execute exactly in the order specified by the user.

図3Eに示すように、全てのフローが単一のAQLクエリに分解できるわけではないことに留意されたい。このフローでは、毎時実行される毎時ドロップ352があり(362)、ステージングデータベースに追加(356)する前にデータが正規化(354)される。次に、毎日(364)、ステージングデータベースからのデータが集計され(358)、ターゲットデータセットとして書き出される(360)。この場合、時間別スケジュールと日次スケジュールとは別々の部分として残す必要がある。 Note that not all flows can be decomposed into a single AQL query, as shown in Figure 3E. In this flow, there is an hourly drop 352 that runs every hour (362) and the data is normalized (354) before adding (356) to the staging database. Next, each day (364), data from the staging database is aggregated (358) and written out (360) as the target dataset. In this case, the hourly schedule and the daily schedule should be left as separate parts.

図4A~図4Vは、一部の実装形態による、フローに結合を追加する一部の態様を示している。図4Aに示されるように、ユーザインターフェースは、左ペイン312、フローエリア313、プロファイルエリア314、およびデータグリッド315を含む。図4A~図4Vの例では、ユーザは、最初に左側ペイン312の接続パレットを使用してSQLデータベースに接続する。この場合、データベースには、米国運輸省道路交通安全局から提供された死亡率分析報告システム(FARS)データが含まれている。図4Bに示されるように、ユーザは、利用可能なテーブルのリスト402から「事故」テーブル404を選択する。図4Cでは、ユーザは、事故テーブルアイコン406をフローエリア313にドラッグする。テーブルアイコン406がフローエリア313にドロップされると、図4Dに示されるように、ノード408が作成されてテーブルを表す。このポイントで、事故テーブルのデータが読み込まれ、事故テーブルのプロファイル情報がプロファイルペイン314に表示される。 4A-4V illustrate some aspects of adding coupling to a flow, according to some implementations. As shown in FIG. 4A, the user interface includes left pane 312 , flow area 313 , profile area 314 and data grid 315 . In the example of FIGS. 4A-4V, the user first connects to the SQL database using the connection palette in left pane 312 . In this case, the database contains Mortality Analysis and Reporting System (FARS) data provided by the US Department of Transportation Highway Traffic Safety Administration. As shown in FIG. 4B, the user selects the “Accident” table 404 from the list of available tables 402 . 4C, the user drags the incident table icon 406 to the flow area 313. In FIG. When table icon 406 is dropped into flow area 313, node 408 is created to represent the table, as shown in FIG. 4D. At this point, the accident table data is read and the profile information for the accident table is displayed in profile pane 314 .

プロファイルペイン314は、図4Eに示されるように、州の列410を含む列の各々の分布データを提供する。一部の実装形態では、プロファイルペインのデータの各列に、データの分布を示すヒストグラムが表示される。例えば、カリフォルニア州、フロリダ州、およびジョージア州は事故件数が多いのに対し、デラウェア州は事故件数が少ない。プロファイルペインでは、各列の上部にあるキーアイコン412を使用して、キーまたは部分キーである列を容易に識別することができる。図4Fに示されるように、一部の実装形態では、3つの異なるアイコンを使用して、列がデータベースキー、システムキー414、または「ほぼ」システムキー416であるかどうかを指定する。一部の実装形態では、1つ以上の他の列と組み合わせた列がシステムキーである場合、列は、ほぼシステムキーである。一部の実装形態では、null値の行が除外された場合に列がシステムキーになる場合、列は、ほぼシステムキーである。この例では、「STケース」と「ケース番号」の両方が、ほぼシステムキーである。 Profile pane 314 provides distribution data for each of the columns, including state column 410, as shown in FIG. 4E. In some implementations, each column of data in the profile pane displays a histogram showing the distribution of the data. For example, California, Florida, and Georgia have high accident counts, while Delaware has low. In the profile pane, you can easily identify columns that are keys or partial keys using the key icon 412 at the top of each column. As shown in FIG. 4F, in some implementations, three different icons are used to designate whether a column is a database key, a system key 414, or an “almost” system key 416. In some implementations, a column is approximately a system key if the column in combination with one or more other columns is the system key. In some implementations, a column is nearly a system key if the column would be a system key if rows with null values were excluded. In this example, both "ST case" and "case number" are mostly system keys.

図4Gでは、ユーザは、左側ペイン312で「人物」テーブル418を選択している。図4Hでは、ユーザは、人物テーブル418をフローエリア313にドラッグし、これは、ドラッグされている間、移動可能なアイコン419として表示される。人物テーブルアイコン419をフローエリア313にドロップした後、図4Iに示されるように、人物ノード422がフローエリアに作成される。この段階では、事故ノード408と人物ノード422との間に接続はない。この例では、両方のノードが選択されているため、プロファイルペイン314は2つの部分に分割される。第1の部分420は事故ノード408のプロファイル情報を示し、第2の部分421は人物ノード422のプロファイル情報を示す。 In FIG. 4G, the user has selected the “People” table 418 in the left pane 312 . In FIG. 4H, the user drags the people table 418 into the flow area 313, which appears as a moveable icon 419 while being dragged. After dropping the people table icon 419 into the flow area 313, a people node 422 is created in the flow area, as shown in FIG. 4I. At this stage there is no connection between the incident node 408 and the person node 422 . In this example, both nodes are selected, so profile pane 314 is split into two parts. A first part 420 shows the profile information for the incident node 408 and a second part 421 shows the profile information for the person node 422 .

図4Jは、フローペイン313およびプロファイルペイン314の拡大図を提供する。プロファイルペイン314は、結合列の候補(すなわち、2つのノードからのデータを結合する可能性)を表示するためのオプション424を含む。このオプションを選択した後、図4Kに示すように、結合候補であるデータフィールドがプロファイルペイン314に表示される。これで結合候補が表示されるので、プロファイルペイン314は、結合列の候補を非表示にするためのオプション426を表示する。この例では、プロファイルペイン314は、人物テーブルの列STケースが事故テーブルのSTケースフィールドと結合される可能性があることを示している(430)。プロファイルペインには、事故テーブルに3つの追加の結合候補があること(428)、および人物テーブルに2つの追加の結合候補があること(432)も示される。図4Lでは、ユーザは、ヒントアイコンをクリック(433)し、それに応じて、図4Mに示すように、プロファイルペインに2つの候補列が隣接して配置される。事故テーブルのSTケース列のヘッダ434は、人物テーブルのSTケース列と結合できることを示している。 FIG. 4J provides an enlarged view of flow pane 313 and profile pane 314 . The profile pane 314 includes an option 424 for displaying candidate join columns (ie, potential joins of data from two nodes). After selecting this option, the data fields that are candidates for merging are displayed in profile pane 314, as shown in FIG. 4K. Now that the join candidates are displayed, the profile pane 314 displays an option 426 to hide the join column candidates. In this example, profile pane 314 indicates that column STCase from the Persons table may be joined with the STCases field from the Incidents table (430). The profile pane also shows that there are three additional candidate joins for the Incidents table (428) and two additional candidate joins for the People table (432). In FIG. 4L, the user clicks (433) the hint icon and in response, two candidate columns are placed side by side in the profile pane, as shown in FIG. 4M. The header 434 of the ST case column of the accident table indicates that it can be joined with the ST case column of the person table.

図4Nは、複数のノードのデータを結合する別の方法を示している。この例では、ユーザは、事故テーブルデータ408および人口テーブルデータ441をフローエリア313に読み込んでいる。人口ノード441を事故ノード408の上にドラッグするだけで、結合が自動的に作成され、結合エクスペリエンスペイン442が表示され、ユーザは結合を確認および/または変更することができる。一部の実装形態では、結合エクスペリエンスはプロファイルペイン314に配置される。他の実装形態では、結合エクスペリエンスは、一時的にプロファイルペイン314を置き換える。結合が作成されると、新しいノード440がフローに追加され、これは、2つのノード408と441との間の接続の作成をグラフィカルに表示する。 FIG. 4N shows another method of combining data from multiple nodes. In this example, the user has loaded accident table data 408 and population table data 441 into flow area 313 . Simply dragging the population node 441 over the accident node 408 automatically creates a bond and displays a bond experience pane 442 where the user can review and/or modify the bond. In some implementations, the combined experience is placed in profile pane 314 . In other implementations, the combined experience temporarily replaces profile pane 314 . Once the join is created, a new node 440 is added to the flow, which graphically represents the creation of the connection between the two nodes 408 and 441.

結合エクスペリエンス442は、図4Oに示されるように、様々なアイコンを備えたツールバー領域448を含む。結合候補アイコン450が選択されると、インターフェースにより、各テーブルのどのフィールドが結合候補であるかが識別される。一部の実装形態は、お気に入りアイコン452を含み、これにより、(例えば、過去にユーザによって選択された、過去にユーザによって重要であると識別された、または過去にユーザによって一般的に選択された)強調表示された「お気に入り」データフィールドが表示される。一部の実装形態では、お気に入りアイコン452は、特定のデータフィールドをお気に入りとして指定するために使用される。プロファイルペイン314およびデータペイン315に列を表示するためのスペースが限られているので、一部の実装形態は、お気に入りのデータフィールドに関する情報を使用して、デフォルトで表示される列を選択する。 Combined experience 442 includes a toolbar area 448 with various icons, as shown in FIG. 4O. When join candidate icon 450 is selected, the interface identifies which fields of each table are join candidates. Some implementations include a favorite icon 452, which (e.g., has been selected by the user in the past, identified as important by the user in the past, or commonly selected by the user in the past). ) shows the highlighted "favorites" data field. In some implementations, favorites icon 452 is used to designate particular data fields as favorites. Due to limited space for displaying columns in profile pane 314 and data pane 315, some implementations use information about favorite data fields to select columns to be displayed by default.

一部の実装形態では、「キーの表示」アイコン454の選択により、インターフェースは、どのデータ列がキーであるか、または複数のデータフィールドからなるキーの一部であるかを識別する。一部の実装形態は、データ/メタデータトグルアイコン456を含み、これは、データに関する情報のディスプレイからメタデータに関するディスプレイに表示を切り替える。一部の実装形態では、データは常に表示されており、メタデータアイコン456は、データに加えてメタデータが表示されるかどうかを切り替える。一部の実装形態は、データグリッドアイコン458を含み、これは、データグリッド315のディスプレイを切り替える。図4Oでは、データグリッドが現在表示されているので、データグリッドアイコン458を選択すると、データグリッドが表示されない。実装形態には典型的に、検索ウィンドウを表示する検索アイコン460も含まれる。デフォルトでは、検索は、データおよびメタデータの両方(例えば、データフィールドの名前とフィールドのデータ値の両方)に適用される。一部の実装形態には、検索対象をより正確に指定するための高度な検索のオプションが含まれている。 In some implementations, selection of the “Show Keys” icon 454 causes the interface to identify which data columns are keys or are part of a key consisting of multiple data fields. Some implementations include a data/metadata toggle icon 456 that switches the display from displaying information about data to displaying about metadata. In some implementations, data is always displayed, and metadata icon 456 toggles whether metadata is displayed in addition to data. Some implementations include a data grid icon 458, which toggles the display of data grid 315. In FIG. 4O, the data grid is currently displayed, so selecting the data grid icon 458 will not display the data grid. Implementations also typically include a search icon 460 that displays a search window. By default, searches are applied to both data and metadata (eg, both data field names and field data values). Some implementations include advanced search options to more precisely specify what to search for.

結合エクスペリエンス442の左側には、結合型464の仕様を含む一連の結合コントロールがある。当技術分野で知られているように、結合は、典型的に、左外部結合、内部結合、右外部結合、または完全外部結合である。これらは、結合アイコン464によってグラフィカルに示されている。現在の結合型が強調表示されているが、ユーザは、別のアイコンを選択することで結合型を変更できる。 On the left side of the join experience 442 are a series of join controls that contain the specification of a join type 464 . As known in the art, joins are typically left outer joins, inner joins, right outer joins, or full outer joins. These are represented graphically by the combined icon 464 . The current bond type is highlighted, but the user can change the bond type by selecting another icon.

一部の実装形態では、結合句の概要466が提供される。これは、結合の両側のフィールドの名前と、結合の両側のデータフィールドのデータ値のヒストグラムの両方を表示する。結合に複数のデータフィールドがある場合、一部の実装形態では、関連する全てのデータフィールドが表示される。他の実装形態には、結合内のデータフィールドをスクロールするためのユーザインターフェースコントロール(図示せず)が含まれる。一部の実装形態にはまた、結合条件の型に基づいて結合されるテーブルの各々の行数を示す概要コントロール468も含まれている。このコントロール内の部分の選択は、プロファイルペイン314およびデータグリッド315に表示されるものを決定する。 In some implementations, a join clause summary 466 is provided. It displays both the names of the fields on both sides of the join and a histogram of the data values for the data fields on both sides of the join. If there are multiple data fields in the join, in some implementations all relevant data fields are displayed. Other implementations include user interface controls (not shown) for scrolling through data fields within the binding. Some implementations also include a summary control 468 that indicates the number of rows in each of the tables that are joined based on the type of join condition. Selection of portions within this control determines what is displayed in profile pane 314 and data grid 315 .

図4P、図4Q、および図4Rは、結合コントロール領域462のための代替のユーザインターフェースを示している。いずれの場合も、結合型が上部に表示される。いずれの場合も、結合に含まれるデータフィールドの視覚的表現が存在する。ここでは、結合には、STケースおよび年の2つのデータフィールドが存在する。これらの選択肢の各々には、結合された各テーブルの行の割合をグラフィカルに示すセクションも存在する。図4Qの上側部分は、その下の図4Uに表示されている。 4P, 4Q, and 4R show alternative user interfaces for the binding control area 462. FIG. In both cases, the binding type is displayed at the top. In either case there is a visual representation of the data fields involved in the join. Here, there are two data fields in the join: STCase and Year. Each of these options also has a section that graphically shows the percentage of rows in each table that have been joined. The upper portion of FIG. 4Q is displayed in FIG. 4U below.

図4Rには、2つのテーブルがどのように関連しているかを示す下側部分が含まれる。分割バー472は事故テーブルの行を表し、分割バー474は人口テーブルを表す。中央の大きなバー477は、2つのテーブル間の内部結合によって接続されている行を表している。現在選択されている結合型は左外部結合であるため、結合結果セット476には、人口テーブルのどの行にもリンクされていない事故テーブルの行を表す部分478も含まれている。下部には、別の長方形480がある。これは、事故テーブルのどの行にもリンクされていない人口テーブルの行を表す。現在の結合型は左外部結合であるため、部分480は、結果セット476に含まれない(下の長方形480の行は、右外部結合または完全外部結合に含まれる)。ユーザはこの図の任意の部分を選択でき、選択した部分がプロファイルペインおよびデータペインに表示される。例えば、ユーザは、「左外側部分」の長方形478を選択し、次に、データペインの行を見て、それらの行がユーザの分析に関連するかどうかを確認することができる。 FIG. 4R includes a lower portion showing how the two tables are related. Split bar 472 represents the rows of the accident table and split bar 474 represents the population table. The large middle bar 477 represents rows that are connected by an inner join between two tables. Since the currently selected join type is a left outer join, the join result set 476 also includes a portion 478 representing rows of the accident table that are not linked to any rows of the population table. Below is another rectangle 480 . This represents a row in the population table that is not linked to any row in the accident table. Part 480 is not included in result set 476 because the current join type is a left outer join (the rows of bottom rectangle 480 are included in a right outer join or full outer join). The user can select any part of this diagram and the selected part will be displayed in the profile and data panes. For example, the user can select the "left outer portion" rectangle 478 and then look at the rows in the data pane to see if those rows are relevant to the user's analysis.

図4Sは、結合コントロールセレクタ464を含む、図4Rに示される結合コントロールインターフェース要素を使用する結合エクスペリエンスを示している。ここでは、図4Tの拡大図でより明確に示されているように、左外側結合アイコン482が強調表示されている。この例では、第1のテーブルは事故テーブルであり、第2のテーブルはファクターテーブルである。図4Uに示すように、インターフェースには、結合されている行数486と結合されていない行数488の両方が表示される。この例には、結合されていない行が多数ある。ユーザは、結合されていないバー488を選択して、図4Vのディスプレイを表示することができる。プロファイルのブラッシングおよびデータグリッドのフィルタ処理により、ユーザは、2010より前のファクターテーブルにエントリがないことから、nullが左外部結合と一致しない値の結果であることがわかる。 FIG. 4S illustrates a binding experience using the binding control interface elements shown in FIG. 4R, including binding control selector 464. FIG. Here, left outer join icon 482 is highlighted, as shown more clearly in the enlarged view of FIG. 4T. In this example, the first table is the accident table and the second table is the factor table. As shown in FIG. 4U, the interface displays both bound 486 and unbound 488 rows. There are many unjoined rows in this example. The user can select unbound bar 488 to display the display of FIG. 4V. By brushing the profile and filtering the data grid, the user sees that nulls are the result of unmatched values with left outer joins, since there are no entries in the factor table prior to 2010.

開示された実装形態は、様々なシナリオを支援する多くの機能をサポートする。多くの機能は上述のとおりであるが、次の複数のシナリオは機能を説明するものである。 The disclosed implementation supports many features that support various scenarios. Many of the functions have been described above, but the following scenarios illustrate the functions.

シナリオ1:イベントログの収集
アレックスはIT部門に勤務しており、彼の仕事の1つは、インフラストラクチャ内のマシンからログを収集して準備し、IT企業の様々なデバッグおよび分析に使用される共有データセットを作成することである。
Scenario 1: Collecting Event Logs Alex works in the IT department and one of his jobs is to collect and prepare logs from machines in the infrastructure to be used for various debugging and analysis in the IT company. to create a shared dataset that

マシンはWindowsを実行しており、アレックスはアプリケーションログを収集する必要がある。エージェントがすでに存在しており、これは、毎晩実行され、ログのCSVエクスポートを共有ディレクトリにダンピングする。各日のデータは別のディレクトリに出力され、マシン名を示すフォーマットで出力される。アプリケーションログの抜粋を図5Aに示す。 The machine is running Windows and Alex needs to collect application logs. There is already an agent that runs nightly and dumps a CSV export of logs to a shared directory. Each day's data is output to a separate directory, formatted to indicate the machine name. An excerpt of the application log is shown in Figure 5A.

アプリケーションログの抜粋には、いくつかの興味深い特徴がある。
●1行目にはヘッダ情報が含まれている。これは、一般的に該当する場合があるか、または該当しない場合がある。
●データの各行には6つの列があるが、ヘッダには5つの列がある。
●ここでの区切り文字は明らかに「,」である。
●最後の列には、引用符で囲まれた複数行の文字列が使用される場合がある。ここの3~9行目は全て、1つの行の一部であることに留意されたい。また、このフィールドでは、引用符を示すために二重引用符を使用しており、文字通りに解釈する必要があることに留意されたい。
Application log excerpts have some interesting features.
● The first line contains header information. This may or may not be the case generally.
• Each row of data has 6 columns, but the header has 5 columns.
● The delimiter here is clearly a ``,''.
● The last column may contain a multi-line string enclosed in quotation marks. Note that lines 3-9 here are all part of one line. Also note that this field uses double quotes to indicate quotes and should be taken literally.

アレックスは、特定のディレクトリ内の全てのCSVファイルを読み込み、それらに対してギザギザ型(jagged)のユニオンを実行するフローを作成する(例えば、CSVファイルの少なくとも1つにデータフィールドが存在する場合は、データフィールドを作成するが、同じデータフィールドが2つ以上のCSVファイルに存在する場合は、そのデータフィールドのインスタンスを1つだけ作成する)。CSV入力ルーチンでは、5列の読み込みはうまくいくが、6列目の引用符が詰まってしまい、複数の列として読み込まれる。 Alex creates a flow that reads all CSV files in a particular directory and performs a jagged union on them (e.g. if at least one of the CSV files has a data field , create a data field, but if the same data field exists in more than one CSV file, create only one instance of that data field). In the CSV input routine, reading column 5 works fine, but the quotes in column 6 get stuck and are read as multiple columns.

その後、アレックスは、
●データペインで列を選択し、それらをマージして元に戻す。
●ファイル名から取得したマシン名を追加する。彼は、データの例でマシン名を選択し、「新しい列として抽出」を選択することでこれを行う。システムは、このアクションからパターンを推測する。
●右クリックして「識別子の追加」を選択すると、行ごとに一意の識別子が生成される。
●データペインで列名および型を直接編集する。
Alex then
● Select columns in the data pane and merge them back together.
● Add the machine name obtained from the file name. He does this by selecting the machine name in the example data and selecting "extract as new column". The system infers patterns from this action.
● Right-click and select Add Identifier to generate a unique identifier for each row.
● Edit column names and types directly in the data pane.

これは全て、データペイン315内のデータに対する直接アクションによって達成されるが、この結果として、ロジックがフローペイン313内のフローに挿入される。 This is all accomplished by direct action on the data in data pane 315 , which results in logic being inserted into the flow in flow pane 313 .

次に、アレックスは、ターゲットデータリポジトリをフローペインにドラッグし、出力をワイヤリングして、ログの完全なレコードを含むキャッシュにこれらのレコードを追加する。 Alex then drags the target data repository onto the flow pane and wires the output to add these records to the cache containing the complete log records.

最後に、アレックスのフローにより、このターゲットデータセットにクエリが実行され、前日に報告したマシンのセットが見出される。これを現在のマシンと比較して、報告しなかったと予想されるマシンのリストとともに警告がアレックスに出力される。 Finally, Alex's flow queries this target dataset to find the set of machines we reported on the previous day. This is compared to the current machines and a warning is printed to Alex with a list of machines that were expected not to report.

アレックスは、様々な方法で同じ結果を達成し得る可能性があることに留意されたい。例えば、
●アレックスは2つの別々のフローを作成することができる。1つは取り込みを実行するものであり、1つは、各日のマシンを前日のマシンと比較し、その結果をアレックスに警告するものである。
●アレックスは、1つのステージで取り込みを実行するフローを作成することができる。それが完了すると、アレックスは、第2のフローを実行することができ、データベースにクエリを実行し、各日を前日と比較してアレックスに警告する。
●アレックスは、ターゲットを入力と出力の両方として有するフローを作成することができる。このフローは、取り込みを実行し、それをデータベースに書き込み、さらに集計してその日のマシンを見出す。また、ターゲットにクエリを実行して前日の結果を取得し、比較を実行して、警告を発生させる。
Note that Alex could have achieved the same result in different ways. for example,
• Alex can create two separate flows. One to run the capture and one to compare each day's machine to the previous day's machine and alert Alex of the results.
• Alex can create a flow that performs ingestion in one stage. Once that is done, Alex can run a second flow, querying the database and comparing each day to the previous day and alerting Alex.
• Alex can create flows that have targets as both inputs and outputs. This flow performs an ingest, writes it to the database, and aggregates to find the machine of the day. It also queries the target to get the previous day's results, performs a comparison, and raises a warning.

アレックスは、マシンが一晩で報告を行う必要があることを知っているので、アレックスは、毎朝最初にフローを実行する。その後、朝の残りの時間を使って、報告しなかったマシンをチェックする。 Alex knows that the machine needs to report overnight, so Alex runs the flow first thing every morning. Then use the rest of the morning to check the machines that didn't report.

シナリオ2:FARSの収集および統合
ボニーは保険会社に勤務しており、分析のコンポーネントとして死亡率分析報告システム(FARS)データをプルしたいと考えている。FARSデータはFTP経由で利用可能であり、ボニーはそれを取得して組み立てる方法を理解する必要がある。彼女は、データプレップアプリケーション250を使用してこれを行うこととした。
Scenario 2: FARS Collection and Integration Bonnie works for an insurance company and wants to pull Mortality Analysis and Reporting System (FARS) data as a component of her analysis. The FARS data is available via FTP and Bonnie needs to figure out how to get it and put it together. She decided to do this using the data prep application 250 .

ボニーは、FARSが公開している一連のフォーマットを調べて、DBFファイルを使用することにした。これらのDBFファイルはFTPサイト全体に分散しており、圧縮されたZIPアーカイブでのみ利用することができる。ボニーはツリービューを調べて、ダウンロードしたいファイルを選択する。データがダウンロードされると、ボニーはフローの次のステップを開始する。彼女はファイルのコレクションを選択し、「抽出」を選択する。これにより、ファイルを年でラベル付けされた個別のディレクトリに解凍するステップが追加される。 Bonnie researched a series of formats published by FARS and decided to use DBF files. These DBF files are scattered across FTP sites and are only available in compressed ZIP archives. Bonnie explores the treeview and selects the file she wants to download. Once the data is downloaded, Bonnie initiates the next step in the flow. She selects the collection of files and selects "Extract". This adds the step of unzipping the files into separate directories labeled by year.

データが集まり始めると、ボニーには問題が見えてくる。
●最初の年には、事故、人物、および車両の3つのテーブルに対応する3つのファイルがある。その後の年には、これらの他にさらに多くのテーブルも存在する。
●ファイル名が統一されていない。例えば、事故ファイルの名前は1975年~1982年と1994年~2014年とでは「accident.dbf」であるが、その間の年では「accYYYY.dbf」(YYYYは4桁の年)という名前である。
●テーブル名が同じでも、時間の経過とともに構造が若干変化する。最新のテーブルには、以前のデータには存在しない追加の列が含まれている。
As the data begins to gather, Bonnie sees a problem.
• In the first year there are 3 files corresponding to the 3 tables: Incidents, Persons and Vehicles. In subsequent years there will be many more tables besides these.
● File names are not standardized. For example, the name of the accident file is "accident.dbf" for 1975-1982 and 1994-2014, but is named "accYYYY.dbf" (where YYYY is the 4-digit year) for the years in between. .
● Even if the table name is the same, the structure changes slightly over time. The latest table contains additional columns not present in the previous data.

ボニーは、全ての年に存在する事故テーブルから手を付ける。彼女はファイルを選択して右クリックし、「ユニオン」を選択する。これによりギザギザ型のユニオンが実行され、列が保持される。彼女はこれを、全ての年に存在する他の3つのテーブルで繰り返し、次に残りのテーブルについて繰り返す。彼女がこれを完了すると、彼女のフローの最終段階で、19個の個別のテーブルが作成される。 Bonnie starts with an accident table that exists in every year. She selects the files, right-clicks, and selects "union." This performs a jagged union, preserving columns. She repeats this with the other three tables that exist in all years, then with the remaining tables. Once she has done this, the final stage of her flow creates 19 separate tables.

これを取得したら、彼女はデータの組み立てを試みる。共通の結合キーはST_CASEという列であり得るように見えるが、事故テーブルのプロファイルペインを見るだけで、これがどこのキー列でもないことがわかる。ST_CASEは重要ではないが、年をクリックすると、ST_CASEが1年に1つしか存在しないことが容易に理解できる。同様に、年およびST_CASEは良好な結合キーのように見える。 Having obtained this, she attempts to assemble the data. It looks like the common join key could be the column ST_CASE, but just looking at the profile pane of the accident table shows that this is nowhere key column. The ST_CASE is not important, but if you click on the year you can easily see that there is only one ST_CASE per year. Similarly, year and ST_CASE look like good join keys.

彼女は、人物テーブルに手を付ける。このテーブルに結合する前に、テーブルの各々には年が必要とされるが、それは存在していない。ただし、ファイルパスには年があるため、データペインでこのデータを選択し、[新しい列として抽出]を選択することができる。システムはこれに対する正しいパターンを推測し、各行の年を抽出する。次に、フロー内の両方のテーブルを選択し、一方の列およびST_CASE列を選択して、それらをもう一方のテーブルにドラッグし、結合が作成される。 She puts her hands on the people table. Before joining this table, each of the tables requires a year, which does not exist. However, since there is a year in the file path, you can select this data in the data pane and choose "Extract as new column". The system guesses the correct pattern for this and extracts the year for each row. Then select both tables in the flow, select one column and the ST_CASE column and drag them to the other table to create a join.

キーを取得したので、結合を作成し続けて、FARSデータがフラット化される。完了したら、チームがデータを使用することができるように、データをTDE(タブローデータ抽出)としてタブローサーバー(Tableau Server)に公開する。 Now that we have the key, we continue to create joins to flatten the FARS data. Once complete, publish the data as a TDE (Tableau Data Extraction) to Tableau Server so that the team can use the data.

シナリオ3:FARSクリーンアップ
コリンは、ボニーと同じ部門の別の従業員である。ボニーのフローが生成するデータを使おうとしている人もいるが、そこには多くの暗号的な値が含まれている。ボニーが別の会社に移ってしまったことに気づき、彼らはコリンに頼ることになる。
Scenario 3: FARS Cleanup Colin is another employee in the same department as Bonnie. Some people are trying to use the data that Bonnie's flow produces, but it contains a lot of cryptographic value. They turn to Colin when they find out that Bonnie has moved on to another company.

フローを見ると、コリンはその全体的なロジックを容易に確認することができ、暗号化されたコード化データも確認することができる。彼が暗号的なルックアップテーブル(LUT)を含む200ページのPDFマニュアルを見つけたとき、そのプロセスは困難なものに思えた。PDFのルックアップテーブルの例を図5Bに示す。単純なものもあれば、非常に複雑なものもある。 Looking at the flow, Colin can easily see its overall logic, as well as the encrypted coded data. The process seemed daunting when he found a 200-page PDF manual containing a cryptographic lookup table (LUT). An example of a PDF lookup table is shown in FIG. 5B. Some are simple, some are very complex.

コリンは、一部のより重要なテーブルから手を付ける。彼は、PDFファイル内のテーブルを選択してフローペイン313に貼り付けることができることを見出した。場合によっては、テーブル内のデータが完全に正しいわけではないが、これが上手く機能するので、コリンはデータペイン315で結果を手動でパッチすることができ、かなりの時間を節約できることになる。彼の仕事は、目に見えて成果が出るものである。テーブルが整列していない場合でも、すぐそれが判明する。 Colin gets his hands on some of the more important tables. He found that he could select a table in a PDF file and paste it into the flow pane 313 . In some cases, the data in the table is not completely correct, but it works and Colin can manually patch the results in the data pane 315, saving him considerable time. His work is visibly fruitful. Even if the table is not aligned, it will be immediately apparent.

最終的に、コリンは、チームが実行する分析に特に関連すると思われる12個のLUTを取り込み、結果を公開して、チームがデータを使用できるようにする。特定の列に関する詳細情報が求められると、コリンは、フローをさらに拡張して、追加のLUTを取り込むことができる。 Ultimately, Colin pulls in 12 LUTs that he believes are particularly relevant to the analysis the team is performing, publishes the results, and makes the data available to the team. When detailed information about a particular column is desired, Colin can further extend the flow to include additional LUTs.

シナリオ4:データエラーの発見
大手ソフトウェア会社の開発者であるダニエルは、ビルド時間を表すデータを調べている。ダニエルは、データのフォーマットを細かく制御することができ、使いやすいCSVフォーマットでデータを作成したが、データを読み込んで、作成したデータベースに追加したいと考えている。
Scenario 4: Finding Data Errors Daniel, a developer at a large software company, is looking at data representing build times. Daniel created the data in an easy-to-use CSV format, where he has fine control over the format of the data, but now wants to read the data and add it to the database he created.

データを読み込むとき、彼女はプロファイルビュー314をスキャンする。彼女が直ちに奇妙と感じたのは、負の時間のビルドがいくつか存在することである。明らかに何らかの問題が存在しているので、彼女は問題をデバッグしたいと考えているが、分析のためにデータをプルしてまとめたいとも考えている。 When loading the data she scans the profile view 314 . What immediately struck her as odd was the presence of some negative time builds. Something clearly exists and she wants to debug the problem, but she also wants to pull the data together for analysis.

彼女は、プロファイルビューで負の時間を選択し、「保持のみ」をクリックしてエラーのある行のみを保持する。彼女は、これらをファイルに通過させるためのターゲットを追加する。彼女は、それらの生の行を使用してデバッグをガイドする。 She selects negative hours in the profile view and clicks "Keep Only" to keep only the rows with errors. She adds targets to pass these to the file. She uses those raw lines to guide debugging.

フローに戻ると、彼女はフィルタの直前に別のブランチを追加する。彼女は(例えば、プロファイルペイン314またはデータペイン315で)再び負の値を選択し、次に単に「削除」を押す。これにより、値がnullに置き換えられる。これは、実際の値が単に不明であることを示す良い指標である。彼女は残りの単純なフローを続行し、ビルドデータをデータベースに追加し、その後で、負の値を調べる。 Back in the flow, she adds another branch just before the filter. She selects negative values again (eg, in profile pane 314 or data pane 315) and then simply presses "delete." This replaces the value with null. This is a good indicator that the actual value is simply unknown. She continues with the rest of the simple flow, adding build data to the database, and then checking for negative values.

シナリオ5:車両部品の追跡
アールは自動車メーカーに勤務しており、各車両および工場の主要部品の現在のステータスを示すデータセットの維持を担当している。データは複数の運用ストアに報告されるが、これらの運用ストアは非常に大規模なものである。数十万の部品が存在しており、自動化された施設として、工場を通過する際に、車両または部品ごとに数千のレコードが機械的に作成される。これらの運用ストアには、部品のステータスとは関係のない、その他の運用情報(例えば、「バルブ134の圧力は500kPaである」)などのレコードも多く含まれている。各部品について、迅速で簡潔なレコードがビジネス上必要である。
Scenario 5: Vehicle Parts Tracking Earl works for an automobile manufacturer and is responsible for maintaining a data set that shows the current status of each vehicle and plant major part. Data is reported to multiple operational stores, but these operational stores are very large. There are hundreds of thousands of parts, and as an automated facility, thousands of records are mechanically created for each vehicle or part as it passes through the factory. These operational stores also contain many records such as other operational information (eg, "pressure at valve 134 is 500 kPa") that is not related to part status. There is a business need for quick and concise records for each part.

アールは、3つのリレーショナル運用ストアの各々のテーブルをフローペイン313にドラッグする。それらのうちの2つは、ログレコードを含む単一のテーブルとしてデータを格納する。3つ目として、小さなスタースキーマがあり、アールは、ドラッグアンドドロップして結合を作成することで迅速にフラット化を行う。 Earl drags a table from each of the three relational operational stores to the flow pane 313 . Two of them store data as a single table containing log records. Third, there is a small star schema, which Earl flattens quickly by creating joins by dragging and dropping.

次に、追加のドラッグアンドドロップにより、アールはギザギザ型のテーブルのユニオンを迅速に実行することができる。その結果、彼は、列を一緒にドラッグアンドドロップすることができ、インターフェースにより結果が合体される。 Then, with additional drag and drop, Earl can quickly perform a union of jagged tables. As a result, he can drag and drop columns together and the interface coalesces the results.

部品識別番号には、若干の問題があり、1つのシステムの値にハイフンが含まれている。アールは、データペイン315内の値のうちの1つを取得し、ハイフンを選択し、そして削除を押す。インターフェースにより、この列からハイフンを削除するルールが推測され、その列の全てのデータのハイフンを削除するルールがフローに挿入される。 The part identification number has some problems, including hyphens in one system value. Earl gets one of the values in the data pane 315, selects the hyphen, and presses delete. The interface infers a rule to remove hyphens from this column and inserts into the flow a rule to remove hyphens from all data in that column.

アールは、現在のプロジェクトに関連していないため、ほとんどのステータスコードを必要としない。彼は単に、部品に関連するステータスコードを求めている。彼は、ステータスコードに関する情報を含むテーブルをプルし、それをフローの最後のノードにドロップする。その結果、ステータスコードに新しい結合が作成される。彼はここで、「ターゲット型」が「部品」に等しい行のみを選択し、「保持のみ」を選択して他の値をフィルタ処理して除外する。このフィルタ処理は、プロファイルペイン314またはデータペイン315で行われる。 Earl doesn't need most status codes because they aren't relevant to the current project. He simply wants the status code associated with the part. He pulls a table containing information about status codes and drops it into the last node of the flow. As a result, a new binding is created for the status code. Here he selects only those rows where "Target Type" equals "Part" and selects "Keep Only" to filter out other values. This filtering is done in profile pane 314 or data pane 315 .

最後に、アールは、各部品の最後の値のみを必要とする。彼は直接のジェスチャで、データペインのデータを日付で並べ替え、部品番号でグループ化し、「top-n」テーブル計算を追加して、各部品の最終更新のみを取得する。 Finally, Earl only needs the last value of each part. With direct gestures, he sorts the data in the data pane by date, groups by part number, and adds a "top-n" table calculation to get only the last update for each part.

アールは、フローを実行し、実行に4時間かかることを発見した。しかし、彼はこれを加速させる方法を知っている。彼は、最後にフローを実行した時間を記録することができ、後続の各実行においてのみ、新しいレコードを組み込むことができる。ただし、これを行うには、累積セット内の既存の行を更新し、それらが新しい部品を表す場合にのみ行を追加する必要がある。彼は「マージ」操作を必要とする。 Earl runs the flow and discovers that it takes 4 hours to run. But he knows how to speed it up. He can record the last time he ran a flow, and can only incorporate new records in each subsequent run. However, doing this requires updating existing rows in the cumulative set and adding rows only if they represent new parts. He needs a "merge" operation.

アールは、部品番号を使用して一致するものを識別し、一致が発生した場合と発生しなかった場合のアクションを提供する。更新ロジックを使用することで、アールのフローの実行にかかる時間はわずか15分となる。時間を節約することで、その会社は、部品が倉庫のどこにあるか、そしてそれらのステータスがどのような状態であるかをより厳密に追跡することができる。 Earl uses the part number to identify matches and provides actions if a match does or does not occur. Using the update logic, Earl's flow takes just 15 minutes to run. By saving time, the company can more closely track where parts are in the warehouse and what their status is.

その後、アールは、このジョブをサーバーにプッシュして、スケジュールを立てて一元的に実行できるようにする。また、スケジュールされたタスクをデスクトップマシンに作成することもでき、デスクトップマシンにより、コマンドラインインターフェースを使用してフローが実行される。 Earl then pushes this job to a server so that it can be scheduled and run centrally. You can also create a scheduled task on your desktop machine, which runs the flow using a command line interface.

シナリオ6:投資ブローカー
ガストンは、IT部門によって生成されたデータを取得してダイジェスト化するチームの投資ブローカーに勤務しており、データを、顧客と連携する様々なチームが使用できるようにしている。IT部門により、顧客のポートフォリオの一部(債券ポジション、株式ポジションなど)を示す様々なデータセットが作成されるが、各々のみではガストンの顧客が必要とするものとならない。
Scenario 6: Investment Broker Gaston works for an investment broker whose team captures and digests data generated by the IT department, making the data available to various teams working with clients. The IT department creates various data sets representing portions of the client's portfolio (bond positions, stock positions, etc.), but each alone is not what Gaston's client needs.

ハーマインが率いる1つのチームは、顧客が電話をかけたときにチームが質問に答えられるように、全ての顧客位置データをプルしてまとめる必要がある。データプレパレーションはそれほど複雑ではない。 One team, led by Harmine, needs to pull all customer location data together so that the team can answer questions when customers call. Data preparation is less complicated.

ガストンは、IT部門により生成される夜間のデータベースドロップを加工し、それらをユニオン化し、データに問題ないことを確認するためにいくつかの簡単なチェックを行う。次に、ハーマインのチームが必要とするものにフィルタ処理し、チームが使用するTDEを作成する。 Gaston processes the nightly database drops generated by the IT department, unions them, and performs a few simple checks to make sure the data is okay. It then filters to what Harmine's team needs and creates a TDE for use by the team.

過去のツールでは、ガストンは毎朝、フローを実行することを忘れていた。しかし、新しいデータプレップアプリケーション250を使用すると、このフローを宣言的に処理することができる。彼は、ハーマインのチームが使用するTDSをハーマインに送信する。これにより、ハーマインのチームが作成する全てのデータ視覚化は、データベースに対して直接実行される。これは、ガストンがデータの更新について心配する必要がなくなり、迅速に実行されることを意味する。 In past tours, Gaston forgot to run the flow every morning. However, with the new Data Prep Application 250, this flow can be handled declaratively. He sends Harmine the TDS that Hermine's team uses. This ensures that all data visualizations Harmine's team creates run directly against the database. This means that Gaston doesn't have to worry about updating data, and it runs quickly.

イアンが率いる別のチームは、同様のデータを使用して、顧客のアカウントのパフォーマンスレビューを行っている。このデータを生成するために、ガストンは、ハーマインのために行った作業を再利用するが、データをイアンのチームのアカウントにフィルタ処理し、追加のフローを実行して、イアンのチームが分析を実行することができるように、データを様々なインデックスおよびパフォーマンス指標と結合する。この作業は費用がかかり、ライブではうまく機能しないように思われる。彼がフローを実行する場合、完了するまでに数時間かかるが、イアンのチームはこれを月に1回だけ必要とする。ガストンは、サーバー上に定期的なカレンダーアイテムを設定して、月に1回これを実行する。 Another team, led by Ian, uses similar data to review the performance of customer accounts. To generate this data, Gaston reuses the work he did for Hermine, but filters the data into Ian's team's accounts and runs additional flows so that Ian's team can perform the analysis. Combine the data with various indexes and performance indicators so that it can be executed. This work is expensive and doesn't seem to work well live. When he runs the flow, it takes hours to complete, but Ian's team only needs it once a month. Gaston does this once a month by setting up a recurring calendar item on the server.

シナリオ7:顧客データのスクラブ
カールは、大手ソフトウェア会社の戦略的アカウントマネージャーである。彼はタブロー(Tableau)を使用して、業界会議の参加者、彼らが誰のために働いているのか、彼らの代表者は誰か、彼らがアクティブな顧客なのかまたは見込み客か、会社が小規模かまたは大規模か、などに関する情報を視覚化しようとしている。
Scenario 7: Customer data scrubbing Karl is a strategic account manager for a large software company. He uses Tableau to identify participants at industry conferences, who they work for, who they represent, whether they are active customers or prospects, whether the company is a small company. You're trying to visualize information about whether it's big or big.

カールは、会議の参加者のリストを有しているが、過去も同様のことを経験していた。彼の最後の経験では、リストをクリーンアップするのに8時間を要し、視覚化の構築を完了するのに15分を要した。今回、彼は、データプレパレーションアプリケーション250を使用して、プロセスを高速化および自動化する。 Karl has a list of conference attendees and has had similar experiences in the past. In his last experience, it took him 8 hours to clean up his list and 15 minutes to finish building the visualization. This time he uses the data preparation application 250 to speed up and automate the process.

カールは、最初に会社名をクリーンアップしたいと考えている。データを見てみると、予想通り、同じ会社が複数の異なるフォーマットで掲載されていることが多く、中には誤字脱字もある。彼は、操作パレットで提供されるファジー重複排除ルーチンを呼び出して、潜在的な重複を識別する。彼は結果を確認し、アルゴリズムが過大評価されていた複数のケースを修正する。彼はまた、アルゴリズムが見逃した複数のケースを見つけ、それらをグループ化する。これにより、正規の会社名を含む顧客リストが生成される。 Karl wants to clean up the company name first. As expected, the data shows that the same company is often listed in multiple different formats, some of which are misspelled. He calls a fuzzy deduplication routine provided in the operations palette to identify potential duplicates. He reviews the results and fixes multiple cases where the algorithm was overestimated. He also finds multiple cases missed by the algorithm and groups them together. This creates a customer list that includes legitimate company names.

次に、タブローサーバーのデータソースに保持されている企業のリストとデータの結合を試みる。彼は、各企業が複数のリストを有していることを発見した。複数の異なる会社が同じ名前を有している場合があり、1つの会社が地域に基づいて複数のアカウントを有している場合がある。 It then attempts to join the data with the list of companies held in the Tableau Server data source. He found that each company had multiple listings. Several different companies may have the same name, and one company may have multiple accounts based on region.

これを整理するために、カールは、発見したLinkedIn(商標)用のRESTコネクタを使用し、それをデータ内の各電子メールアドレスに渡して、各人物の国および州を取得する。この手順では、彼が有している情報(例えば、その人物の名前、会社、役職)を取得し、LinkedInの検索機能を使用して、各エントリの最良の結果を導き出す。次に、会社および場所のデータをサーバー内のデータに結合して、正しいアカウントを見出す。 To sort this out, Carl uses the REST connector he discovered for LinkedIn™ and passes it to each email address in the data to get each person's country and state. This procedure takes the information he has (eg, the person's name, company, job title) and uses LinkedIn's search functionality to find the best results for each entry. The company and location data are then combined with the data in the server to find the correct account.

カールは、彼の結合が常に上手く機能するとは限らないことを発見した。彼が選んだ正規の会社名は、彼のアカウントデータベースにあるものと常に一致するとは限らない。彼は自分の結合をファジー結合に変換し、ファジー一致を確認し、さらに手動で結果を修正する。 Carl has found that his union doesn't always work. The legal company name he chooses doesn't always match the one in his account database. He converts his joins to fuzzy joins, checks for fuzzy matches, and manually corrects the results.

データをクリーンアップしたので、タブローでデータを開いて、データの視覚化を作成する。 Now that you have cleaned up your data, open it up in Tableau and create a visualization of the data.

一般的に使用されるフローの機能は、次のとおりである。
●ユーザが操作の論理順序を正確に制御する必要がある、複数レベルのユニオン、結合、および集計。
●理解を深めるためにユーザが配置および注釈を付けたレイアウト。
●データがフローを進むにつれて、データの構造を明確にする必要がある。
●フローの一部を再利用して、2つの異なる出力を生成する。
●2人以上の他のユーザのために、場合によっては別々のチームでデータを準備する作成者。
●フローを自動的に実行するようにスケジュールする。
Commonly used flow features are:
● Multi-level unions, joins, and aggregations that require the user to precisely control the logical order of operations.
● Layouts arranged and annotated by the user for better understanding.
● The structure of the data needs to be clarified as it progresses through the flow.
• Reuse a portion of the flow to generate two different outputs.
● Authors who prepare data for two or more other users, possibly in separate teams.
● Schedule a flow to run automatically.

データプレパレーションアプリケーションは、ETL(抽出、変換、および読み込み)システムとして分類される場合がある。3つのフェーズは各々、異なる型のタスクを実行する。 Data preparation applications are sometimes categorized as ETL (Extraction, Transformation, and Loading) systems. Each of the three phases performs a different type of task.

抽出フェーズでは、ユーザは、1つ以上の利用可能なデータソースからデータをプルする。通常、ユーザは次のタスクを実行する。
●単なるファイルの移動。例えば、ユーザは、他の処理の前にFTPソースからファイルを取得することができる。
●構造(例えば、リレーショナル、半構造化、または非構造化)、フォーマット(例えば、構造化ストレージ、CSVファイル、またはJSONファイル)、およびソース(例えば、ファイルシステムまたは正式なデータベース)が大きく異なるデータを取り込む。
●ソース全体、またはソースの一部を選択して読み取る。部分的な読み取りは、前回の取り込み時よりも新しいデータまたは変更されたデータをプルする場合か、またはパフォーマンス上の理由でチャンクをサンプリングするか、もしくはプルする場合によく行われる。
In the extraction phase, users pull data from one or more available data sources. A user typically performs the following tasks:
● Simply move files. For example, a user can retrieve files from an FTP source before other processing.
Data that differ widely in structure (e.g., relational, semi-structured, or unstructured), format (e.g., structured storage, CSV files, or JSON files), and sources (e.g., file systems or formal databases) take in.
● Selectively read the entire source or part of the source. Partial reads are often done when pulling data that is newer or has changed since the last time it was ingested, or when sampling or pulling chunks for performance reasons.

変換フェーズでは、ユーザは、様々な方法でデータを変換する。通常、変換には次のタスクが含まれる。
●エラーの修正、値の欠落または重複の処理、同一であるべきバリアント値の調整、規格への適合など、データのクリーニングを行う。
●スカラーおよびテーブルの計算、集計、行および列のフィルタ処理、ピボット(解除)、または外部データの組み込み(ジオコーディングなど)を通じて、データを拡張または強化する。
●ユニオンまたは結合(ファジー結合を含む)を介して複数のソースを組み合わせる。
●個別の処理のために(行または列のいずれかで)まとめられた複数の型のデータをデインターリーブする。
●データのプロファイルまたはデータに関するメトリックを抽出して、データをよりよく理解する。
During the transformation phase, the user transforms the data in various ways. Transformation typically includes the following tasks:
• Clean the data, including correcting errors, handling missing or duplicate values, adjusting variant values that should be identical, and conforming to standards.
● Extend or enrich data through scalar and table calculations, aggregations, row and column filtering, pivoting (de-)or incorporating external data (such as geocoding).
● Combining multiple sources via unions or joins (including fuzzy joins).
• De-interleave multiple types of data that are grouped together (either by rows or columns) for separate processing.
● Extract profiles or metrics about your data to better understand your data.

読み込みフェーズでは、ユーザは結果を保存して、結果を分析できるようにする。これには、以下が含まれる。
●タブローデータ抽出(TDE)、フォーマットされたファイル(CSVもしくはExcelなど)、または外部データベースへのデータの書き込み。
●スケジュールに従ってスナップショットを作成する。
●新しい結果または変更された結果でデータを追加または更新する。
In the loading phase, the user saves the results so that they can be analyzed. This includes:
• Writing data to Tableau Data Extraction (TDE), formatted files (such as CSV or Excel), or external databases.
● Create snapshots on a schedule.
● Add or update data with new or changed results.

ユーザがデータを準備するためのフローを構築した後、ユーザは多くの場合、次のことを行う必要がある。
●指定された時間に、または他のフローと協調して実行するようにフローをスケジュールする。
●フローの結果を他人と共有する。
●フロー自体を他のユーザと共有して、他のユーザがフローを調べたり、変更したり、複製したり、管理したりできるようにする。これには、フローまたはデータをIT部門と共有して、IT部門がそれを改善および管理できるようにすることが含まれる。
After a user builds a flow to prepare data, the user often needs to:
● Schedule flows to run at specified times or in coordination with other flows.
● Share your flow results with others.
● Share the flow itself with other users so they can examine, modify, duplicate, and manage the flow. This includes sharing flows or data with IT so they can improve and manage it.

開示されたシステム250により、ユーザは制御が与えられる。多くの場合、データプレップアプリケーションはユーザに対してインテリジェントな選択を行うが、ユーザは、常に制御を表明できる。多くの場合、制御には2つの異なる態様がある。操作の論理的な順序の制御(結果が正しく、ユーザの希望するセマンティクスと一致することを保証するために使用される)および物理的な制御(主にパフォーマンスを確保するために使用される)である。 The disclosed system 250 gives the user control. Data prep applications often make intelligent choices for the user, but the user can always exercise control. In many cases, there are two different aspects of control. In controlling the logical order of operations (used to ensure that results are correct and consistent with the user's desired semantics) and physical controls (used primarily to ensure performance) be.

開示されたデータプレップアプリケーション250はまた、自由度を提供する。ユーザは、必要なデータの形状を実現するために、データ生成コンポーネントを任意の方法でアセンブルおよび再アセンブルできる。 The disclosed data prep application 250 also provides flexibility. A user can assemble and reassemble the data generation components in any way to achieve the desired shape of the data.

開示されたデータプレップアプリケーション250は、増分的なインタラクションおよび即時のフィードバックを提供する。ユーザがアクションを実行すると、システムにより、ユーザのデータのサンプルに関する即時の結果ならびに視覚的なフィードバックを通じてフィードバックが提供される。 The disclosed data prep application 250 provides incremental interaction and immediate feedback. As the user performs actions, the system provides feedback through immediate results as well as visual feedback on samples of the user's data.

典型的に、ETLツールは命令型セマンティクスを使用する。つまり、ユーザは、全ての操作の詳細と操作を実行する順序とを指定する。これにより、ユーザは完全に制御を行うことができる。対照的に、SQLデータベースエンジンは宣言型クエリを評価し、クエリによって要求されたデータに基づいて最適な実行プランを選択することができる。 Typically, ETL tools use imperative semantics. That is, the user specifies the details of all operations and the order in which they are to be performed. This gives the user complete control. In contrast, a SQL database engine can evaluate declarative queries and choose the optimal execution plan based on the data requested by the query.

開示された実装形態は、命令型および宣言型の両方の操作をサポートしており、ユーザは、これら2つの実行オプションから様々なレベルの粒度で選択することができる。例えば、ユーザは、新しいデータセットについて学習しながら、最初にフローを完全に制御することを望む場合がある。ユーザが結果に満足したら、その後、実行速度を最適化するために、ユーザは制御の全てまたは一部をデータプレップアプリケーションに放棄することができる。一部の実装形態では、ユーザは各フローのデフォルトの動作(命令型または宣言型)を指定し、個々のノードのデフォルトの動作をオーバーライドすることができる。 The disclosed implementation supports both imperative and declarative operations, allowing the user to select between these two execution options with varying levels of granularity. For example, a user may initially want to have full control of the flow while learning about a new data set. Once the user is satisfied with the results, the user can then relinquish all or part of the control to the data prep application in order to optimize execution speed. In some implementations, the user can specify default behavior (imperative or declarative) for each flow, overriding the default behavior of individual nodes.

開示された実装形態は、TDE、SQLサーバー、Oracle、Redshift、フラットファイルなどを含む多くの異なるターゲットデータベースにデータを書き込むことができる。場合によっては、フローによってターゲットシステムに新しいデータセットが作成される。他の例では、フローは、新しい行の追加、既存の行の更新、行の挿入、または行の削除によって既存のデータセットを変更する。 The disclosed implementation can write data to many different target databases, including TDE, SQL Server, Oracle, Redshift, flat files, and others. In some cases, flows create new datasets in the target system. In other examples, a flow modifies an existing dataset by adding new rows, updating existing rows, inserting rows, or deleting rows.

フローの実行中にエラーが発生する可能性がある。エラーには、一時的なシステムの問題、ユーザが修正措置を符号化する可能性のあるデータ内の潜在的な既知のエラー状態、および作成者が考慮しなかった暗黙の制約が含まれる場合がある。開示された実装形態は概して、可能な場合、これらのエラー状態を自動的に処理する。例えば、過去に同じエラー状態が発生した場合、一部の実装形態では既知のソリューションが再適用される。 Errors can occur during flow execution. Errors may include transient system problems, potential known error conditions in the data for which users may encode corrective actions, and implied constraints not considered by the author. be. The disclosed implementations generally handle these error conditions automatically when possible. For example, if the same error condition occurred in the past, some implementations reapply the known solution.

フローは本質的にデータ変換であるが、実装形態により、ユーザは、宣言型モデリング情報で出力に注釈を付けて、出力の使用、表示、検証、または組み合わせの方法を説明することができる。例として、以下が挙げられる。
●デフォルトの色または書式など、タブローでの値の表示方法に影響を与える注釈。
●単位または系統を示すフィールド上の注釈。
●エイリアスおよびグループの作成。
●テーブル間の主キーおよび外部キーなどの機能上の制約。
●フィールドが正であることを要求するなど、ドメインの制約。
Flows are essentially data transformations, but implementations allow users to annotate outputs with declarative modeling information to describe how the outputs should be used, displayed, validated, or combined. Examples include:
● Annotations that affect how values are displayed in the Tableau, such as default colors or formatting.
● Annotations on the field indicating units or systems.
● Create aliases and groups.
● Functional constraints such as primary and foreign keys between tables.
● Domain constraints, such as requiring fields to be positive.

開示されている実装形態には、概して、次のコンポーネントが含まれている。
●フローを表示、構築、編集、および実行するためにユーザが対話するフロントエンド領域。
●抽象フロー言語(AFL)。これは、ソースへの接続、計算およびその他の変換、モデリング操作、フローの結果である行の処理など、フロー内の全てのロジックを表現する内部言語である。
●実行エンジン。このエンジンは、AFLプログラムを解釈して実行する。一部の実装形態では、このエンジンはローカルで実行される。クエリはリモートサーバーにプッシュされる場合があるが、結果およびその後の処理はローカルリソースを使用して行われる。サーバー環境では、サーバーはフローの共有分散実行環境を提供する。このサーバーは、多くのユーザからのフローをスケジュールおよび実行でき、AFLフローを自動的に分析およびスケールアウトできる。
●他人へのフローの公開を許可するカタログサーバー。
The disclosed implementation generally includes the following components.
● A front-end area that users interact with to view, build, edit, and run flows.
- Abstract Flow Language (AFL). It is an internal language that expresses all the logic in the flow, such as connecting to sources, computations and other transformations, modeling operations, and processing rows that are the result of the flow.
● Execution engine. This engine interprets and executes AFL programs. In some implementations, this engine runs locally. Queries may be pushed to remote servers, but results and further processing are done using local resources. In a server environment, the server provides a shared distributed execution environment for flows. This server can schedule and execute flows from many users and can automatically analyze and scale out AFL flows.
● A catalog server that allows publishing flows to others.

一部のデータ視覚化アプリケーションは、データプレップフローを実行することができ、TDEまたは他の作成されたデータセットを使用してデータ視覚化を構築することができる。 Some data visualization applications can run data prep flows and can use TDE or other authored datasets to build data visualizations.

開示された実装形態は、他のアプリケーションによって作成された(例えば、ETLツールで作成された)一部のデータフローをインポートすることもできる。 The disclosed implementation can also import some dataflows created by other applications (eg, created with ETL tools).

実装形態により、ユーザは次のことが可能になる。
●図6Bに示すように、データソースに接続して、それをデータソースから読み取る。
●サポートされている操作(図6Aを参照)を任意の順序および組み合わせにおいて組み合わせたフローを構築する。
●フローの各ステップでデータがどのように変換されるかについての合理的なサンプルを(例えば、プロファイルペインおよびデータペインで)確認する。
●フローの全てのステップでのデータのクラフト視覚化。
●完成したフローをローカルで実行して、TDEまたはCSV出力などの出力を生成する(図6Cを参照)。
●パイプラインまたはTDEの結果をカタログサーバーに公開する。
●データプレップで作成したTDS(タブローデータソース)を明示的なフローとしてインポートする。
Implementations allow users to:
• Connect to and read from the data source, as shown in Figure 6B.
• Construct a flow that combines the supported operations (see Figure 6A) in any order and combination.
● See a reasonable sample of how data is transformed at each step of the flow (eg, in the profile and data panes).
● Craft visualization of data at every step of the flow.
• Run the completed flow locally to generate output such as TDE or CSV output (see Figure 6C).
● Publish pipeline or TDE results to a catalog server.
● Import a TDS (Tableau Data Source) created in DataPrep as an explicit flow.

構成済みのサーバーにアクセスすると、ユーザは次のことができる。
●TDEを他人と共有する。
●データプレップのパイプライン(フロー)を適切なセキュリティで他のユーザと共有する。
●サーバー環境でデータプレップのパイプラインを実行して、手動またはスケジュールに従ってTDEを作成する。
Accessing a configured server allows users to:
● Share TDE with others.
● Share data prep pipelines (flows) with other users with proper security.
● Run data prep pipelines in a server environment to create TDEs manually or on a schedule.

ノードの出力は、複数の後続ノードに送信できる。ここには2つの基本的なケースが存在する。第1のケースでは、フローは発散し、元に戻ることはない。フローが収束しない場合、フローからの出力はいくつか存在する。この場合、各ブランチは事実上、ツリー内の全ての先行クエリで構成される個別のクエリである。可能な場合、実装形態により、これが最適化され、フローの共有部分が複数回実行されないようにする。 A node's output can be sent to multiple successor nodes. There are two basic cases here. In the first case, the flow diverges and never returns. If the flow does not converge, there will be several outputs from the flow. In this case, each branch is effectively a separate query made up of all preceding queries in the tree. Where possible, implementations optimize this to avoid executing shared parts of the flow multiple times.

第2のケースでは、フローは収束する。意味的には、これは行が両方のパスを通過することを意味する。繰り返すが、フローの実行は概して、その前身のフローを二重に実行することはない。1つのフローでこれらの両方のケースが発生する可能性があることに留意されたい。 In the second case the flow converges. Semantically, this means that the line goes through both passes. Again, execution of a flow generally does not duplicate its predecessor flow. Note that both these cases can occur in one flow.

ユーザインターフェースにより、以下のことが可能となる。
●ユーザは、フロー内にフォークを作成できるようになる。新しいノードが追加されると、ユーザは、新しいノードが選択したノードにフォークを作成するか、既存の一連の操作の中間ノードとして挿入するかを指定することができる。例えば、現在、ノードAからノードBへのパスが存在し、ユーザがAに新しいノードを挿入することを選択した場合、ユーザは、新しいノードへの第2のパスを作成するか、AとBとの間に新しいノードを挿入するかを選択することができる。
●ユーザは、フロー全体ではなく、フローの個々の出力を実行することができるようになる。
The user interface allows the following:
● Users will be able to create forks in flows. When a new node is added, the user can specify whether the new node should fork the selected node or be inserted as an intermediate node in an existing sequence of operations. For example, if there currently exists a path from node A to node B and the user chooses to insert a new node at A, the user can either create a second path to the new node or You can choose to insert a new node between
● Users will be able to run individual outputs of a flow instead of the entire flow.

ユーザは、任意の複雑なフローにフィルタを追加できる。例えば、ユーザはフローのあるポイントでクリックしてフィルタを追加し、その後、述語として機能する計算を入力することができる。一部の実装形態では、計算式はスカラー関数に制限されている。ただし、一部の実装形態では、集計、テーブル計算、詳細レベル式など、より複雑な式が有効になっている。 Users can add filters to arbitrarily complex flows. For example, a user can click at a point in the flow to add a filter and then enter a computation that acts as a predicate. In some implementations, computational expressions are restricted to scalar functions. However, some implementations enable more complex expressions such as aggregations, table calculations, and level of detail expressions.

ユーザは、システムによって推測された場合でも、任意のフィルタを編集することができる。特に、全てのフィルタは式として表される。 The user can edit any filter, even if it was inferred by the system. In particular, all filters are represented as expressions.

プロファイルペイン314およびデータペイン315により、フィルタを作成する簡単な方法が提供される。例えば、一部の実装形態では、ユーザがデータペインの列に1つ以上のデータ値を選択し、右クリックして「保持のみ」または「除外」を選択できる。これにより、現在選択されているノードのフローにフィルタが挿入される。システムにより、フィルタを実装するための式が推測され、式が保存される。後にユーザがフィルタを変更する必要がある場合、すぐであるか、1年後であるかに関係なく、容易に変更することができる。 Profile pane 314 and data pane 315 provide an easy way to create filters. For example, in some implementations, a user can select one or more data values in a data pane column, right-click, and select "Keep Only" or "Exclude." This inserts the filter into the flow of the currently selected node. The system infers an expression to implement the filter and saves the expression. If the user later needs to change the filters, whether immediately or in a year, they can easily do so.

プロファイルペイン314において、ユーザは、データフィールドの値の範囲を指定するバケットを選択することができる。例えば、カテゴリフィールドの場合、この範囲は典型的に、値のリストとして指定される。数値フィールドの場合、この範囲は典型的に、上限または下限のある連続した範囲として指定される。ユーザは、バケットを選択して、フィールドの値が範囲内にある全ての行を選択(または除外)するフィルタを容易に作成することができる。 In profile pane 314, the user can select buckets that specify ranges of values for data fields. For example, for categorical fields, this range is typically specified as a list of values. For numeric fields, this range is typically specified as a continuous range with an upper or lower bound. A user can select a bucket to easily create a filter that selects (or excludes) all rows with a range of field values.

ユーザが1つの列の複数の値または1つの列の複数のバケットに基づいてフィルタを作成する場合、フィルタ式はORを使用する。つまり、行が値または範囲のいずれか1つに一致する場合、その行は式に一致する。 When a user creates a filter based on multiple values in one column or multiple buckets in one column, the filter expression uses OR. That is, a row matches an expression if it matches any one of the values or ranges.

ユーザは、データペインの単一行の複数のデータ値に基づいてフィルタを作成することもできる。この場合、フィルタ式はANDを使用する。つまり、指定された全ての値に一致する行のみが式に一致する。これは、プロファイルペインのバケットにも適用することができる。この場合、行は選択したバケット範囲の各々で一致する必要がある。 Users can also create filters based on multiple data values in a single row in the data pane. In this case the filter expression uses AND. That is, only rows that match all specified values match the expression. This can also be applied to buckets in the profile pane. In this case, rows must match in each of the selected bucket ranges.

また、一部の実装形態により、2つ以上の行を含み、2つ以上の列を含む複数のデータ値に基づいてフィルタを作成することが可能となる。この場合、作成される式は選言標準形であり、各選言は選択されたデータ値を有する行の1つに対応する。一部の実装形態では、プロファイルウィンドウの範囲選択にも同じ手法が適用される。 Some implementations also allow filters to be created based on multiple data values, including more than one row and including more than one column. In this case, the formulas created are in disjunctive normal form, with each disjunction corresponding to one of the rows having the selected data values. In some implementations, the same approach applies to profile window range selection.

これらのケースの各々で、ユーザはデータ値またはバケットを視覚的に選択し、簡単なジェスチャ(例えば、右クリックおよびメニュー選択)を使用して、行を選択した値のみに制限するか、選択した値を除外するフィルタを作成することに留意されたい。ユーザは、正しいブール論理で式を記述する方法を理解する必要はない。 In each of these cases, the user visually selects a data value or bucket and uses simple gestures (e.g., right-click and menu selection) to restrict rows to only selected values or to select Note that we create a filter that excludes values. The user does not need to understand how to write expressions in correct Boolean logic.

図4A~図4Vに関して上に示したように、ユーザは結合を作成することができる。以下の図9に示すように、宣言型実行が有効になっているかどうかによって、結合がリモートサーバーにプッシュされて実行される場合がある。 As shown above with respect to Figures 4A-4V, the user can create joins. As shown in Figure 9 below, bindings may be pushed to a remote server for execution, depending on whether declarative execution is enabled.

一部の実装形態では、フローの簡略化バージョンまたは要約バージョンがノードおよび注釈として提供される。一部の実装形態では、ユーザは、フルビューもしくは要約ビューを切り替えるか、または個々のノードを切り替えてノード内の詳細を非表示もしくは表示することができる。例えば、1つのノードに、特定のソースファイルのクリーンアップを実行するための12個の操作が含まれる場合がある。クリーンアップ手順を数回繰り返した後、それらは正常に機能しており、ユーザは概して、詳細の確認を望むことはない。詳細はそのままであっても、ユーザは、ノードの要約バージョンだけを表示することで、乱雑さを隠すことができる。 In some implementations, a simplified or condensed version of the flow is provided as nodes and annotations. In some implementations, the user can toggle between full view or summary view, or toggle individual nodes to hide or show details within nodes. For example, one node may contain 12 operations to perform cleanup for a particular source file. After repeating the cleanup procedure a few times, they are working fine and users generally don't want to confirm details. Even though the details remain, the user can hide the clutter by displaying only a summarized version of the node.

一部の実装形態では、ファンアウトしない運用ノードは、ノード上の注釈にまとめて折りたたまれる。結合および分割などの操作により、追加のノードでフローが中断される。一部の実装形態では、圧縮ビューのレイアウトは自動である。一部の実装形態では、ユーザは要約ビューでノードを再配置することができる。 In some implementations, operational nodes that do not fan out are collapsed together into annotations on the node. Operations such as joins and splits break the flow at additional nodes. In some implementations, the layout of compressed views is automatic. In some implementations, the user can rearrange nodes in the summary view.

プロファイルペインおよびデータペインはどちらも、フローペインで現在選択されているノードに関連付けられている行のセットに関する有用な情報を提供する。例えば、プロファイルペインには、データ内の様々なデータ値(例えば、各データ値を有する行数を示すヒストグラム)のカーディナリティが表示される。複数のデータフィールドの値の分布が表示される。プロファイルペインに表示されるデータの量に起因して、データの取得は通常、非同期で実行される。 Both the profile pane and data pane provide useful information about the set of rows associated with the currently selected node in the flow pane. For example, the profile pane displays the cardinality of various data values in the data (eg, a histogram showing how many rows have each data value). Shows the distribution of values for multiple data fields. Due to the amount of data displayed in the profile pane, data retrieval is typically performed asynchronously.

一部の実装形態では、ユーザは、プロファイルペインでデータ値をクリックして、他のアイテムの比例ブラッシングを確認することができる。ユーザが特定のデータ値を選択すると、ユーザインターフェースにより、以下が行われる。
●選択を示す。
●比例ブラッシングを使用して、そのテーブルの他の列との相関関係を示す。
●関連するデータペインをフィルタ処理または強調表示して、値が選択に一致する行のみを表示する。(これにより、データペインに表示されているデータがフィルタ処理される。フローペインにフィルタノードは作成されない。)
●プロファイルペインで複数の値が選択されている場合、選択された全ての値が表示され、それに応じてデータペインがフィルタ処理される(つまり、いずれか1つの値に一致する行にフィルタ処理される)。
In some implementations, the user can click data values in the profile pane to see proportional brushing of other items. When the user selects a particular data value, the user interface will:
● Indicate selection.
• Use proportional brushing to show correlations with other columns in that table.
● Filter or highlight the relevant data pane to show only rows whose values match your selection. (This filters the data displayed in the Data pane; it does not create a Filter node in the Flow pane.)
● If multiple values are selected in the profile pane, all selected values are displayed and the data pane is filtered accordingly (that is, filtered to rows matching any one value). ).

一部の実装形態では、ユーザから特に要求されない限り、行はデータペインに表示されない。一部の実装形態では、データペインは常に自動的に入力され、プロセスは非同期で進行する。一部の実装形態では、選択したノードの行のカーディナリティに基づいて異なる規格が適用される。例えば、一部の実装形態では、カーディナリティが閾値を下回っている場合に行を表示し、カーディナリティが閾値を上回っている場合は行を表示しないか、非同期で続行する。一部の実装形態では、2つの閾値を指定して、行のセットを小、大、または特大に指定する。一部の実装形態では、インターフェースは小さいカーディナリティの行を表示し、大きいカーディナリティの行を非同期に表示し、非常に大きいカーディナリティの結果を表示しない。無論、データペインには、少数の行しか表示することはできない。これは通常、サンプリングによって(例えば、n行ごとに)選択される。一部の実装形態では、データペインにより、不明な量のデータに対応するために無限スクロールが実装される。 In some implementations, rows are not displayed in the data pane unless specifically requested by the user. In some implementations, data panes are always automatically populated and the process proceeds asynchronously. In some implementations, different standards apply based on the row cardinality of the selected node. For example, some implementations display a row if the cardinality is below a threshold and do not display the row or continue asynchronously if the cardinality is above the threshold. In some implementations, two thresholds are specified to designate a set of rows as small, large, or extra large. In some implementations, the interface displays small cardinality rows, displays large cardinality rows asynchronously, and does not display very large cardinality results. Of course, the data pane can only display a small number of rows. This is typically selected by sampling (eg, every n rows). In some implementations, the data pane implements infinite scrolling to accommodate unknown amounts of data.

開示されたデータプレップアプリケーションにより、ユーザインターフェースがネイティブに読み取り、変更し、操作するドキュメントモデルが提供される。このモデルは、UIのフォーマットを提供しながら、ユーザへのフローを記述する。このモデルは、AQLとフェデレーションエバリュエータを使用して、実行するタブローモデルに変換することができる。このモデルは、信頼性の高いキャッシュおよび中間結果の再利用も可能にする。 The disclosed data prep application provides a document model that the user interface natively reads, modifies, and manipulates. This model describes the flow to the user while providing the format for the UI. This model can be transformed into a running tableau model using AQL and federated evaluators. This model also enables reliable caching and reuse of intermediate results.

図7Aに示すように、データモデルには3つのサブモデルが含まれ、サブモデルの各々は評価の適切な段階でのフローを記述する。第1のサブモデルは「Loom Doc」702である。(一部の実装形態では、データプレップアプリケーションを「Loom」と称する。) As shown in FIG. 7A, the data model contains three sub-models, each describing the flow through the appropriate stages of evaluation. The first sub-model is “Room Doc” 702 . (In some implementations, data prep applications are referred to as "Looms.")

Loom doc702は、フローを説明するモデルであり、フローは、ユーザが直接確認して操作するフローである。Loom doc702には、全てのETL操作および型チェックを実行するために必要な全ての情報が含まれている。典型的に、Loom doc702には、フローのレンダリングまたは編集に純粋に必要な情報は含まれていない。Loom doc702はフローとして構築される。各操作には次のものがある。
●操作の実行方法を説明する一連のプロパティ。
●操作を実行するデータを説明するゼロ以上の入力。
●この操作の結果のデータを説明するゼロ以上の出力。
The Loom doc 702 is a model that explains the flow, and the flow is the flow that the user directly confirms and operates. Loom doc 702 contains all the information needed to perform all ETL operations and type checking. Typically, the Loom doc 702 does not contain information purely necessary for rendering or editing the flow. Loom doc 702 is structured as a flow. Each operation has:
● A set of properties that describe how the operation should be performed.
● Zero or more inputs describing the data on which to perform the operation.
● Zero or more outputs describing the data resulting from this operation.

操作には、入力操作、変換操作、出力操作、およびコンテナ操作の4つの主要な型が存在する。 There are four main types of operations: input operations, transform operations, output operations, and container operations.

入力操作は、ETLの「抽出」部分を実行する。これらはフローをデータソースにバインドし、そのソースからデータをプルしてそのデータをフローに公開するように構成されている。入力操作には、CSVファイルの読み込みまたはSQLデータベースへの接続が含まれる。入力操作のノードは、典型的に、入力がゼロであり、少なくとも1つの出力を有する。 Input operations perform the "extraction" portion of the ETL. They are configured to bind a flow to a data source, pull data from that source and expose that data to the flow. Input operations include reading CSV files or connecting to SQL databases. An input operation node typically has zero inputs and at least one output.

変換操作は、ETLの「変換」部分を実行する。これらは、データのストリームに対して「機能的」操作を提供し、それを変換する。変換操作の例には、「計算を’[HospitalName]-[Year]’として作成」、「hospitalId=’HarbourView’を有する行をフィルタ処理する」などが挙げられる。変換ノードには、少なくとも1つの入力および少なくとも1つの出力がある。 The transform operation performs the "transform" portion of the ETL. They provide "functional" operations on streams of data and transform them. Examples of transformation operations include "make calculation as '[HospitalName]-[Year]'", "filter rows with hospitalId='HarborView'", and so on. A transform node has at least one input and at least one output.

出力操作は、ETLの「読み込み」部分を提供する。これらは、到着するデータストリームでダウンストリームデータソースを実際に更新するという副次的な役割を担っている。これらのノードには1つの入力があり、出力はない(フロー内の後続のノードへの「出力」はない)。 Output operations provide the "read" portion of the ETL. They have a secondary role of actually updating the downstream data source with the incoming data stream. These nodes have one input and no output (no "output" to subsequent nodes in the flow).

コンテナ操作は、他の操作を論理グループにグループ化する。これらは、フローのドキュメント化を容易にするために使用される。コンテナ操作は、フローペインの「ノード」としてユーザに公開される。各コンテナノードには、他のフロー要素(例えば、一連の通常のノード)と、ドキュメント用のフィールドとが含まれている。コンテナノードは、任意の数の入力と任意の数の出力とを有することができる。 Container operations group other operations into logical groups. These are used to facilitate flow documentation. Container operations are exposed to the user as "nodes" in the flow pane. Each container node contains other flow elements (eg, a series of regular nodes) and fields for documents. A container node can have any number of inputs and any number of outputs.

データストリームは、あるノードから別のノードへとフローを横切って移動するデータの実際の行を表す。論理的には、これらは行として表示することができるが、操作上、データストリームは様々な方法で実装することができる。例えば、一部のフローは、単純にAQL(分析クエリ言語)にコンパイルされる。 A data stream represents the actual rows of data that move across the flow from one node to another. Logically these can be displayed as rows, but operationally the data streams can be implemented in a variety of ways. For example, some flows are simply compiled to AQL (Analytical Query Language).

拡張可能な操作とは、データプレップアプリケーションでは評価方法が直接知られていない操作のことであり、サードパーティのプロセスまたはコードを呼び出すものである。これらは、フェデレーションエバリュエータの一部としては実行されない操作である。 An extensible operation is one that the data prep application does not directly know how to evaluate and that calls into third-party processes or code. These are operations that are not performed as part of the Federation Evaluator.

論理モデル704は、全てのエンティティ、フィールド、関係性、および制約を含むモデルである。これは、フローを実行することによって構築され、フローの任意の部分で構築されるモデルを定義する。論理モデルのフィールドは、結果の列である。一部のエンティティは、他のエンティティで構成されているが、論理モデルのエンティティは、結果のテーブルを表す。例えば、ユニオンには、他のエンティティの結果であるエンティティがある。論理モデルの制約は、フィルタなどの追加の制約を表す。論理モデルの関係性は、エンティティ間の関係性を表し、それらを組み合わせるのに十分な情報を提供する。 A logical model 704 is a model that includes all entities, fields, relationships, and constraints. It is built by executing a flow and defines a model that is built in any part of the flow. The fields of the logical model are the resulting columns. Some entities are composed of other entities, but entities in the logical model represent tables of results. For example, unions have entities that are the result of other entities. Logical model constraints represent additional constraints such as filters. Relationships in the logical model represent relationships between entities and provide sufficient information to combine them.

第3のサブモデルは、物理モデル706である。物理モデルには、フローを再実行する必要があるかどうかを識別する情報、ならびに結果データベースにフローを直接照会する方法など、キャッシュ用のメタデータが含まれている。メタデータには次のものが含まれる。
●このポイントでの論理モデルのハッシュ。
●各ルートデータソースのタイムスタンプ、および最後にクエリされた日時。
●結果データの場所を説明するパスまたはURI。
A third sub-model is the physics model 706 . The physical model contains metadata for caching, such as information identifying whether the flow should be rerun, as well as how to query the flow directly in the results database. Metadata includes:
● A hash of the logical model at this point.
● Timestamp for each root data source, and when it was last queried.
- A path or URI that describes the location of the result data.

このデータは、フローを最適化するだけでなく、より高速な結果のナビゲーションを可能にするために使用される。 This data is used to optimize the flow as well as enable faster result navigation.

物理モデルには、この物理モデルの作成に使用される論理モデルへの参照(ファイルまたはデータストアへのポインタなど)が含まれる。物理モデル706はまた、モデルを評価するために使用されるデータソースを識別するタブローデータソース(TDS)を含む。典型的に、これは論理モデル704から生成される。 A physical model contains references (such as pointers to files or data stores) to the logical models used to create this physical model. The physical model 706 also includes a Tableau Data Source (TDS) that identifies the data sources used to evaluate the model. Typically this is generated from the logical model 704 .

物理モデルには、指定されたデータソースからデータを抽出するために使用されるAQL(分析クエリ言語)クエリも含まれている。 The physical model also contains AQL (Analytical Query Language) queries that are used to extract data from the specified data sources.

図7Aに示されるように、loom doc702は、論理モデル704を形成するためにコンパイルされ(722)、論理モデル704は、物理モデルを形成するために評価される(724)。 As shown in FIG. 7A, loom doc 702 is compiled (722) to form logical model 704, and logical model 704 is evaluated (724) to form a physical model.

図7Bは、一部の実装形態によって使用されるファイルフォーマット710を示している。ファイルフォーマット710は、ローカル実行およびリモート実行の両方で使用される。ファイルフォーマットにはデータおよびフローの両方が含まれていることに留意されたい。場合によっては、フローはコピー/貼り付けを実行してデータを作成することがある。このような場合、データはフローの一部になる。ファイルフォーマットは、基になるフローとは別に、UI状態を保持する。一部のディスプレイはアプリケーションとともに保存される。レイアウトの他の部分はユーザ固有であり、アプリケーションの外部に保存される。ファイルフォーマットは、バージョン管理することができる。 FIG. 7B shows a file format 710 used by some implementations. File format 710 is used for both local and remote execution. Note that the file format contains both data and flow. In some cases, a flow may perform a copy/paste to create data. In such cases, the data becomes part of the flow. The file format keeps the UI state separate from the underlying flow. Some displays are saved with the application. Other parts of the layout are user-specific and stored outside the application. The file format can be versioned.

ファイルフォーマットには、マルチドキュメントフォーマットがある。一部の実装形態では、図7Bに示すように、ファイルフォーマットには3つの主要な部分がある。一部の実装形態では、ファイルフォーマット710は、編集情報712を含む。このセクションは、デバイス間および編集セッション間で編集エクスペリエンスを継続させる役割を担っている。このセクションには、フローの評価には必要ないが、ユーザのUIを再構築するために必要なデータが格納される。編集情報712は、アンドゥ(Undo)履歴を含んでおり、アンドゥ履歴には、編集セッションが閉じられ、再び開かれた後にユーザが操作を元に戻すことを可能にする永続的なアンドゥバッファが含まれる。編集情報には、表示されているペイン、フローノードのx/y座標など、フローの実行方法に反映されていないUI状態も含まれる。ユーザがUIを再度開くと、ユーザは過去にあったものを確認することができるため、作業を再開しやすくなる。 File formats include a multi-document format. In some implementations, the file format has three main parts, as shown in FIG. 7B. In some implementations, file format 710 includes editing information 712 . This section is responsible for keeping the editing experience continuous across devices and across editing sessions. This section contains data that is not needed for flow evaluation, but is needed to reconstruct the user's UI. Editing information 712 includes an undo history, which includes a persistent undo buffer that allows users to undo operations after an editing session is closed and reopened. be Editing information also includes UI states that are not reflected in how the flow is executed, such as the pane being displayed and the x/y coordinates of the flow nodes. When the user reopens the UI, the user can see what was in the past, making it easier to resume work.

ファイルフォーマット710は、図7Aに関して上で説明したように、Loom Doc702を含む。これは、必要とされるファイルフォーマットの唯一のセクションである。このセクションにはフローが含まれている。 File format 710 includes Loom Doc 702, as described above with respect to FIG. 7A. This is the only section of the file format that is required. This section contains flows.

ファイルフォーマット710はまた、ローカルデータ714を含み、ローカルデータ714は、フローを実行するために必要な任意のテーブルまたはローカルデータを含む。このデータは、HTMLテーブルをデータプレップアプリケーションに貼り付けるなどのユーザインタラクションを通じて作成することができるか、またはフローが評価のためにサーバーにアップロードする必要があるローカルCSVファイルを使用する場合に作成することができる。 File format 710 also includes local data 714, which includes any tables or local data needed to execute the flow. This data can be created through user interaction, such as pasting an HTML table into a data prep application, or if the flow uses a local CSV file that must be uploaded to the server for evaluation. can be done.

評価サブシステムを図7Cに示す。評価サブシステムにより、フローを評価するための信頼できる方法が提供される。評価サブシステムにより、過去の実行の結果を操作するか、またはフローの操作の上に操作を重ねる簡単な方法も提供される。加えて、評価サブシステムは、フローの後半部分を実行するときに、フローの一部からの結果を再利用する自然な方法を提供する。評価サブシステムにより、キャッシュされた結果に対して実行するための高速な方法も提供される。 The evaluation subsystem is shown in Figure 7C. An evaluation subsystem provides a reliable method for evaluating flows. The evaluation subsystem also provides an easy way to manipulate the results of past executions or layer operations on top of flow operations. Additionally, the evaluation subsystem provides a natural way to reuse results from parts of the flow when executing later parts of the flow. The evaluation subsystem also provides a fast way to act on cached results.

図7Cに示すように、フローを評価するための2つの基本的なコンテキストが存在する。フローを実行(740)すると、プロセスはフローを評価し、結果を出力ノードに流し込む。デバッグモードで実行している場合、プロセスは、一時データベースに結果を書き込み、一時データベースは、ナビゲーション、分析、および部分フローの実行を高速化するために使用することができる。 As shown in FIG. 7C, there are two basic contexts for evaluating flows. Upon executing 740 the flow, the process evaluates the flow and feeds the results into the output node. When running in debug mode, the process writes results to a temporary database, which can be used to speed navigation, analysis, and execution of partial flows.

ナビゲーションおよび分析(730)では、ユーザはデータセットを調査している。これには、データ分布の確認、ダーティデータの検索などが含まれる。これらのシナリオでは、エバリュエータは概して、フロー全体の実行を回避し、代わりに、過去のフローの実行から作成された一時データベースに対して直接、より高速なクエリを実行する。 In navigation and analysis (730), the user is exploring the dataset. This includes checking data distribution, searching for dirty data, etc. In these scenarios, the evaluator generally avoids running the entire flow and instead performs faster queries directly against the temporary database created from past flow runs.

これらのプロセスは、スマートキャッシングの決定が可能であることを確認するために、キャッシングに関する優れたメタデータを利用する。 These processes take advantage of good metadata about caching to ensure that smart caching decisions can be made.

図7Dに示すように、一部の実装形態には非同期サブシステムが含まれている。非同期サブシステムは、ユーザに非ブロッキング動作を提供する。ユーザが行の取得を必要としない操作を大量に行っている場合、ユーザは行の取得をブロックされない。非同期サブシステムにより、増分的結果が提供される。多くの場合、ユーザは、結果の検証または理解を開始するためにデータの完全なセットを必要としない。このような場合、非同期サブシステムにより、到着時に最良の結果が得られる。非同期サブシステムは、進行中のクエリに対して信頼性の高い「キャンセル」操作も提供する。 Some implementations include an asynchronous subsystem, as shown in FIG. 7D. Asynchronous subsystems provide users with non-blocking operation. Users are not blocked from fetching rows if they are doing a lot of operations that do not require row fetching. Asynchronous subsystems provide incremental results. In many cases, users do not need the complete set of data to begin validating or understanding results. In such cases, an asynchronous subsystem provides the best results on arrival. The asynchronous subsystem also provides a reliable "cancel" operation for queries in progress.

一部の実装形態では、非同期モデルには、4つの主要コンポーネントが含まれている。
●ブラウザレイヤー。このレイヤーは、開始する非同期タスクからUUIDおよび更新バージョンを取得する。次に、UUIDを使用して更新を取得する。
●REST API。このレイヤーは、スレッドプールでタスクを開始する。スレッドプール内のタスクは、更新を取得するとステータスサービスを更新する。ブラウザレイヤーは、更新があるかどうかを知りたい場合、REST APIプロシージャを呼び出して最新のステータスを取得する。
●AqlAPI。このレイヤーは、あたかもコールバックを含む同期呼び出しのように呼び出される。呼び出しは、基になる要求が終了したときにのみ終了する。ただし、コールバックでは、行がすでに処理された状態でステータスサービスを更新することができる。これにより、ユーザに段階的な進行状況を提供することができる。
●フェデレーションエバリュエータ。AqlApiは、新しいプロセスとして実行されるため、非同期の別のレイヤーを提供するフェデレーションエバリュエータを呼び出す。
In some implementations, the asynchronous model includes four main components.
● Browser layer. This layer gets the UUID and update version from the asynchronous task it starts. Then use the UUID to get the update.
●REST APIs. This layer starts tasks on a thread pool. Tasks in the thread pool update the status service as they get updates. When the browser layer wants to know if there are any updates, it calls a REST API procedure to get the latest status.
● Aql API. This layer is called as if it were a synchronous call with callbacks. A call ends only when the underlying request ends. However, the callback can update the status service while the row has already been processed. This makes it possible to provide the user with a step-by-step progress.
● Federation Evaluator. Since AqlApi runs as a new process, it calls a federation evaluator that provides another layer of asynchrony.

キャンセル操作の実装形態は、キャンセルが発生する場所によって異なる。ブラウザレイヤーでは、容易にキャンセル要求を送信して、結果のポーリングが停止される。REST APIでは、実行中のスレッドにキャンセルイベントを容易に送信することができる。 The implementation of the cancel operation depends on where the cancellation occurs. At the browser layer, simply send a cancel request to stop polling for results. The REST API makes it easy to send a cancel event to a running thread.

一部の実装形態では、フローがすでに作成された後、フローを安全かつ容易に「リファクタリング」することができる。現在のETLツールでは、最初は単純に見えても、規模が大きくなると変更できなくなるようなフローを作ることができる。これは、変更がフローにどのように影響するかを人々が理解するのが難しく、動作のチャンクをビジネス要件に関連する断片に分割するのが難しいためである。これの多くはユーザインターフェースが原因であるが、基盤となる言語では、UIに必要な情報を提供する必要がある。 In some implementations, flows can be safely and easily "refactored" after they have already been created. Current ETL tools allow you to create flows that look simple at first, but become unchangeable when scaled up. This is because it is difficult for people to understand how changes affect the flow, and it is difficult to break chunks of behavior into pieces that are relevant to business requirements. Much of this is due to the user interface, but the underlying language needs to provide the necessary information for the UI.

開示された実装形態により、ユーザは容易にリファクタリングできるフローを作成することができる。これは、ユーザが操作またはノードを容易に実行することができることを意味する。
●操作を移動し、論理的に並べ替える。実装形態により、これらの操作がエラーを作成するかどうかについて直接フィードバックが提供される。例えば、ユーザがADD_COLUMN->FILTERのフローを有するとする。FILTERが追加された列を使用しない限り、ユーザはADD_COLUMNノードの前にFILTERノードをドラッグすることができる。FILTERが新しい列を使用する場合、インターフェースは即座にエラーを発生し、ユーザに問題を通知する。
●複数の操作およびノードを1つの新しいノード(再利用可能)にまとめる。この新しいノードには、受け入れる「型」と返される「型」がある。例えば、ユーザがJOIN_TABLES->ALTER_COLUMN->ALTER_COLUMN->ALTER_COLUMNを含むフローのスニペットを有しているとする。実装形態により、ユーザはこれらの4つのステップを1つのノードに組み合わせて、ノードに「FIXUP_CODES」などの意味のある名前を割り当てることができる。新しいノードは2つのテーブルを入力として受け取り、テーブルを返す。入力テーブルの型には、それらが結合された列と、ALTER_COLUMNSで使用されることになった任意の列とが含まれる。出力テーブルの型は、操作の結果として生じる型である。
●ノードから操作を分割する。ここでは、ユーザは、即時操作中にノードに有機的に追加された操作を再編成することができる。例えば、ユーザが20の操作を有する巨大なノードを有していて、病院コードの修正に関連する10の操作を独自のノードへの分割を望んでいるとする。ユーザはそれらのノードを選択し、それらをプルすることができる。削除される操作に依存する他の操作がノードにある場合、システムはエラーを表示し、FixupHospitalCodesノードの後に新しいノードを作成する修正を提案する。
●既存のノードへのインライン化操作。ユーザがクリーニングを行った後、フローの別の部分に属する作業が行われる場合がある。例えば、ユーザが保険コードをクリーンアップすると、病院コードにいくつかの問題が見つかり、クリーンアップする。次に、ユーザは、病院コードのクリーンアップをFixupHospitalCodesノードに移動したいと考えている。これは、簡単なドラッグアンドドロップ操作を使用して実行される。ユーザが、依存する操作の前にフロー内の場所に操作をドロップしようとすると、インターフェースにより、提案されたドロップ場所が機能しないことが即座に視覚的にフィードバックされる。
●型を変更して、フローの一部が壊れていないか直ちに確認する。ユーザは、フローを使用してから、列のうちの1つの型を変更することを決定することができる。実装形態により、フローを実行する前であっても、問題があれば直ちにユーザに通知される。
The disclosed implementation allows users to create flows that can be easily refactored. This means that the user can easily execute an operation or node.
● Move operations and rearrange them logically. Implementations provide direct feedback as to whether these operations create errors. For example, suppose a user has a flow of ADD_COLUMN->FILTER. As long as the FILTER does not use added columns, the user can drag the FILTER node before the ADD_COLUMN node. If the FILTER uses the new column, the interface immediately raises an error and notifies the user of the problem.
● Combine multiple operations and nodes into one new node (reusable). This new node has a "type" to accept and a "type" to return. For example, suppose a user has a snippet of a flow containing JOIN_TABLES->ALTER_COLUMN->ALTER_COLUMN->ALTER_COLUMN. Depending on the implementation, the user may combine these four steps into one node and assign the node a meaningful name such as "FIXUP_CODES". The new node takes two tables as input and returns a table. The input table types include the columns they were joined to and any columns that were to be used in ALTER_COLUMNS. The type of the output table is the type resulting from the operation.
● Separate operations from nodes. Here, the user can reorganize the operations that were organically added to the node during immediate operations. For example, a user has a huge node with 20 operations and wants to split the 10 operations related to hospital code modification into their own nodes. The user can select those nodes and pull them. If there are other operations on the node that depend on the deleted operation, the system will display an error and suggest a fix that creates a new node after the FixupHospitalCodes node.
● Inline operations into existing nodes. After the user has cleaned, there may be work that belongs to another part of the flow. For example, when the user cleans up the insurance code, it finds some problems in the hospital code and cleans it up. Next, the user wants to move the hospital code cleanup to the FixupHospitalCodes node. This is done using a simple drag and drop operation. When the user attempts to drop an operation to a location in the flow before the dependent operation, the interface provides immediate visual feedback that the suggested drop location will not work.
● Change the type and immediately see if any part of the flow is broken. The user can use the flow and then decide to change the type of one of the columns. Depending on the implementation, the user is immediately notified of any problems, even before running the flow.

一部の実装形態では、ユーザがフローをリファクタリングしているときに、システムは、ドロップターゲットを識別することで支援を行う。例えば、ユーザがノードを選択してフローペイン内でドラッグし始めた場合、一部の実装形態では、ノードを移動させることができる場所が(例えば、強調表示されて)表示される。 In some implementations, when the user is refactoring a flow, the system assists by identifying drop targets. For example, if the user selects a node and begins dragging it within the flowpane, in some implementations the location where the node can be moved is displayed (eg, highlighted).

開示されたデータプレップアプリケーションは、次の3つの態様を有する言語を使用する。
●式言語。これは、ユーザが計算を定義する方法である。
●データフロー言語。これは、ユーザがフローの入力、変換、関係性、および出力を定義する方法である。これらの操作は、データモデルを直接変更する。この言語の型は、個々の列ではなく、エンティティ(テーブル)および関係性である。ユーザはこの言語を直接確認することはないが、UIでノードと操作を作成することで間接的に使用する。例としては、テーブルの結合および列の削除などが挙げられる。
●制御フロー言語。これらはデータフローの周囲で発生し得る操作であるが、実際にはデータフローではない。例えば、ファイル共有からzipをコピーして解凍すること、書き出されたTDEを取得して共有にコピーすること、データソースの任意のリストに対してデータフローを実行するなどが挙げられる。
The disclosed data prep application uses a language that has three aspects.
●Formula language. This is how the user defines the calculation.
● Data flow language. This is how the user defines the inputs, transformations, relationships, and outputs of the flow. These operations modify the data model directly. The types in this language are entities (tables) and relationships rather than individual columns. Users do not see this language directly, but use it indirectly by creating nodes and operations in the UI. Examples include joining tables and deleting columns.
● Control flow language. These are operations that can occur around dataflows, but are not really dataflows. For example, copying a zip from a file share and unzipping it, getting an exported TDE and copying it to a share, running a dataflow against an arbitrary list of data sources, and so on.

これらの言語は異なるが、互いに重なり合っている。式言語はフロー言語によって使用され、フロー言語は制御フロー言語によって使用できる。 Although these languages are different, they overlap each other. Expression languages are used by flow languages, and flow languages can be used by control flow languages.

この言語は、図8Aに示すように、論理的に左から右に進む操作のフローを記述する。ただし、フローの評価方法により、実際の実装形態では、パフォーマンスを向上させるために操作を再配置できる。例えば、データの抽出時にフィルタをリモートデータベースに移動すると、全体的な実行速度を大幅に向上させることができる。 This language describes the flow of operations logically from left to right as shown in FIG. 8A. However, due to how the flow is evaluated, in a practical implementation the operations can be rearranged to improve performance. For example, moving filters to a remote database when extracting data can greatly improve overall execution speed.

データフロー言語は、ETLに直接影響するフローおよび関係性を記述するため、大部分の人がデータプレップアプリケーションに関連付けている言語である。言語のこの部分には、モデルおよびノード/操作の2つの主要なコンポーネントがある。これは、標準のETLツールとは異なる。データを直接操作するフロー(例えば、「フィルタ」操作から「フィールドの追加」操作への実際の行のフロー)の代わりに、開示されたフローは、作成するものを指定する論理モデルと、論理モデルを具現化する方法を定義する物理モデルとを定義する。この抽象化により、最適化に関してより多くの余裕が提供される。 Dataflow languages are the languages most people associate with data prep applications because they describe the flows and relationships that directly affect ETL. There are two main components in this part of the language: models and nodes/operations. This differs from standard ETL tools. Instead of a flow that manipulates the data directly (e.g. the flow of the actual rows from the 'filter' operation to the 'add field' operation), the flow disclosed is a logical model that specifies what to create and a logical model Define a physical model that defines how to implement This abstraction provides more leeway for optimization.

モデルは、基本的な名詞である。モデルは、操作されているデータのスキーマおよび関係性を記述する。上記のように、論理モデルおよび個別の物理モデルが存在する。論理モデルは、特定のポイントでのフローの基本的な「型」を提供する。変換されるデータを説明するフィールド、エンティティ、および関係性について説明する。このモデルには、セットおよびグループなどが含まれる。論理モデルは、必要なものを指定するが、具現化は指定しない。このモデルのコアパーツは次のとおりである。
●フィールド:出力のデータフィールドに変換される(または計算を支援する)実際のフィールドである。各フィールドは、エンティティおよび式に関連付けられている。フィールドは必ずしも全てが表示されている必要はない。フィールドには、物理フィールド、計算フィールド、および一時フィールドの3つの型がある。物理フィールドは、結果のデータセットに具現化される。これらは、適切なフィールドまたは計算のいずれかである。計算フィールドは、結果のTDSに計算フィールドとして書き込まれるため、具現化されることはない。一時フィールドは、物理フィールドの計算をより良好に行うために作成される。それらは決して書き出されない。一時フィールドが計算フィールドによって参照されている場合、言語により警告が発行され、このフィールドは計算フィールドとして扱われる。
●エンティティ:論理モデルの名前空間を記述するオブジェクトである。エンティティは、テーブルのスキーマが到着することによって作成されるか、関係性によって一緒に関連付けられているエンティティのコレクションで構成することができる。
●関係性:様々なエンティティが互いにどのように関係しているかを説明するオブジェクトである。これらを使用して、複数のエンティティを新しい複合エンティティに組み合わせることができる。
●制約:エンティティに追加される制約について説明する。制約には、エンティティの結果を実際に制限するフィルタが含まれる。いくつかの制約が適用されている。強制制約は、一意制約またはnull以外の制約など、アップストリームソースから保証される。いくつかの制約が表明されている。これらは、真であると信じられている制約である。データがこの制約に違反していることが判明した場合は常に、何らかの方法でユーザに通知される。
A model is a basic noun. A model describes the schema and relationships of the data being manipulated. As noted above, there is a logical model and a separate physical model. A logical model provides a basic "type" of flow at a particular point. Describe the fields, entities, and relationships that describe the data to be transformed. This model includes sets, groups, and so on. A logical model specifies what is needed, but not the implementation. The core parts of this model are:
• Fields: These are the actual fields that will be converted to (or assisted in calculations for) data fields in the output. Each field is associated with an entity and an expression. Not all fields are necessarily displayed. There are three types of fields: physical fields, calculated fields, and transient fields. Physical fields are embodied in the resulting dataset. These are either fields or calculations as appropriate. Computed fields are written to the resulting TDS as computed fields and are therefore never instantiated. Temporary fields are created for better computation of physical fields. They are never written out. If a temporary field is referenced by a calculated field, the language issues a warning and treats this field as a calculated field.
● Entity: An object that describes the namespace of the logical model. Entities can consist of collections of entities that are created by arriving schemas of tables or that are related together by relationships.
• Relationships: Objects that describe how various entities are related to each other. They can be used to combine multiple entities into new composite entities.
● Constraints: Describes the constraints added to the entity. Constraints include filters that actually limit the entity results. Some constraints apply. A mandatory constraint is guaranteed from an upstream source, such as a unique or not-null constraint. Some constraints are expressed. These are constraints that are believed to be true. Whenever data is found to violate this constraint, the user is notified in some way.

フローには、論理モデルに1つ以上のフォークを含めることができる。フローのフォークは、各フォークに同じ論理モデルを使用する。ただし、フォークの両側のカバーの下に新しいエンティティがある。これらのエンティティは、列が投影または削除されない限り、基本的に元のエンティティに渡される。 A flow can contain one or more forks in the logical model. Forks of a flow use the same logical model for each fork. However, there are new entities under the covers on both sides of the fork. These entities are essentially passed on to the original entity unless columns are projected or removed.

新しいエンティティを作成する理由の1つは、エンティティ間の関係性を追跡することである。これらの関係性は、どのフィールドが変更されない場合でも引き続き有効である。ただし、フィールドが変更されると、それは新しいエンティティの新しいフィールドになるため、関係性が機能しなくなったことがわかる。 One reason for creating new entities is to track relationships between entities. These relationships remain valid even if no fields are changed. However, when the field changes, it becomes a new field in the new entity, so we know the relationship no longer works.

一部の実装形態では、ノードまたは操作を固定できる。フローは一連の操作の論理的な順序を記述するが、システムは、物理的な順序を異なるものにすることで処理を自由に最適化できる。ただし、ユーザは、論理的順序と物理的順序とが完全に同じであることを確認したい場合がある。かかる場合、ユーザはノードを「固定」することができる。ノードが固定されると、システムは、固定前の操作が固定後の操作の前に物理的に発生することを保証する。場合によっては、これは何らかの形態の具現化をもたらす。ただし、システムは可能な限りこれを介してストリーミングする。 In some implementations, nodes or operations can be fixed. A flow describes the logical order of a set of operations, but the system is free to optimize the processing by having different physical orders. However, the user may want to ensure that the logical order and physical order are exactly the same. In such cases, the user can "pin" the node. When a node is pinned, the system ensures that pre-pin operations physically occur before post-pin operations. In some cases, this leads to some form of realization. However, the system will stream through this whenever possible.

物理モデルは、特定のポイントでの論理モデルの具現化を記述する。各物理モデルは、それを生成するために使用された論理モデルへの参照を有する。物理モデルは、キャッシング、増分フロー実行、および読み込み操作にとって重要である。物理モデルには、フローの結果を含むファイルへの参照が含まれる。これは、このポイントまでの論理モデルを説明する一意のハッシュである。物理モデルは、実行用に生成されたTDS(タブローデータソース)およびAQL(分析クエリ言語)も指定する。 A physical model describes the realization of a logical model at a particular point. Each physical model has a reference to the logical model that was used to generate it. Physical models are important for caching, incremental flow execution, and read operations. The physical model contains references to files containing the results of the flow. This is a unique hash describing the logical model up to this point. The physical model also specifies the TDS (Tableau Data Source) and AQL (Analytical Query Language) generated for execution.

ノードおよび操作は、基本的な動詞である。モデル内のノードには、データの整形、計算、およびフィルタ処理の方法を定義する操作が含まれている。UI言語との一貫性を保つために、「操作」という用語は、何かを実行するフロー内の「ノード」の1つを指す。ノードは、操作を含むコンテナを参照し、UIのフローペインにユーザに表示されるものにマップするために使用される。各特殊なノード/操作には、操作方法を説明するプロパティが関連付けられている。 Nodes and operations are basic verbs. Nodes in the model contain operations that define how data is shaped, calculated, and filtered. For consistency with the UI language, the term "operation" refers to one of the "nodes" in the flow that does something. Nodes refer to containers that contain operations and are used to map to what is displayed to the user in the UI's flow pane. Each special node/operation has associated properties that describe how it operates.

ノードには、入力操作、変換操作、出力操作、およびコンテナノードの4つの基本的な型がある。入力操作は、外部ソースから論理モデルを作成する。例として、CSVをインポートする操作が挙げられる。入力操作は、ETLのE(抽出)を表す。変換操作は、論理モデルを新しい論理モデルに変換する。変換操作は論理モデルを取り込んで、新しい論理モデルを返す。変換ノードは、ETLのT(変換)を表す。例として、既存の論理モデルに列を追加するプロジェクト操作が挙げられる。出力操作は論理モデルを取り込んで、それを他のデータストアに具現化する。例えば、論理モデルを取得し、その結果をTDEに具現化する操作である。これらの操作は、ETLのL(読み込み)を表す。コンテナノードは、フロー全体で構成がどのように行われるかに関する基本的な抽象化であり、ノードがUIに表示されるときに表示される内容の抽象化も提供する。 There are four basic types of nodes: input operations, transform operations, output operations, and container nodes. Input operations create logical models from external sources. An example is the operation of importing CSV. An input operation represents E (extraction) in ETL. A transform operation transforms a logical model into a new logical model. A transform operation takes a logical model and returns a new logical model. A transform node represents a T (transform) in ETL. An example would be a project operation that adds columns to an existing logical model. Output operations take a logical model and materialize it in another data store. For example, an operation that takes a logical model and implements the result in a TDE. These operations represent the L (reads) of ETL. A container node is the basic abstraction for how composition is done throughout the flow, and also provides an abstraction for what is displayed when the node is displayed in the UI.

図8Bに示すように、型システムは3つの主要な概念で構成されている。
●操作はアトミックアクションであり、それぞれに入力ならびに出力、および必須のフィールドセットがある。
●必須フィールドは、操作に必要なフィールドである。必須フィールドは、空の型環境で操作を評価し、「想定される」フィールドのいずれかを収集することによって決定することができる。
●型環境(Type Environment)は、フロー内の特定のポイントの型を検索する方法を決定する構造である。フローグラフの各「エッジ」は、型環境を表す。
As shown in Figure 8B, the type system consists of three main concepts.
● Operations are atomic actions, each with inputs and outputs and a required set of fields.
● Mandatory fields are fields that are required for an operation. Required fields can be determined by evaluating the operation in an empty type environment and collecting any of the "expected" fields.
● The Type Environment is a construct that determines how to find the type of a particular point in the flow. Each "edge" of the flow graph represents a type environment.

型チェックは2段階で実行される。型環境の作成フェーズでは、システムはフローの方向にフローを実行する。システムにより、各ノードに必要な型と、ノードが出力する型環境とが把握される。フローが抽象的である場合(例えば、実際にはどの入力ノードにも接続しない場合)、空の型環境が使用される。型の改良は第2の段階である。このフェーズでは、システムは最初のフェーズから型環境を取得し、それらを「逆方向」にフローして、型環境の作成で発生した型のナローイングによって型の競合が発生したかどうかを確認する。このフェーズでは、システムはサブフロー全体に必要な一連のフィールドも作成する。 Type checking is performed in two stages. During the type environment creation phase, the system executes the flow in the direction of the flow. The system keeps track of the types required by each node and the type environment that the node outputs. If the flow is abstract (eg, does not actually connect to any input nodes), an empty type environment is used. Mold refinement is the second step. In this phase, the system takes the type environments from the first phase and flows them "backwards" to see if type narrowing that occurred in creating the type environments caused type conflicts. . During this phase, the system also creates a set of fields required for the entire subflow.

各操作には、型環境が関連付けられている。この環境には、アクセス可能な全てのフィールドおよびその型が含まれている。図8Cに示すように、型環境には5つのプロパティがある。 Each operation has an associated type environment. This environment contains all accessible fields and their types. As shown in Figure 8C, the type environment has five properties.

環境は「オープン(Open)」または「クローズ(Closed)」のいずれかであり得る。環境がオープンの場合、未知のフィールドがあり得ると想定される。この場合、不明なフィールドは全て型であると見なされる。これらのフィールドは、想定型(AssumedTypes)フィールドに追加される。環境がクローズである場合、環境は全てのフィールドが既知であると想定されるため、未知のフィールドは全て失敗となる。 An environment can be either "Open" or "Closed." If the environment is open, it is assumed that there may be unknown fields. In this case, all unknown fields are assumed to be of type. These fields are added to the AssumedTypes field. If the environment is closed, the environment assumes all fields are known, so any unknown fields fail.

既知の型は全て型(Types)メンバーにある。これは、フィールド名からその型へのマッピングである。型は、別の型環境にすることができるか、またはフィールドにすることができる。フィールドは最も基本的な型である。 All known types are in the Types member. This is a mapping from field names to their types. A type can be another type environment or it can be a field. A field is the most basic type.

各フィールドは2つの部分で構成されている。basicTypesは、フィールドの可能な型のセットを説明する型のセットである。このセットに要素が1つしかない場合は、その型が判明する。セットが空の場合、型エラーが発生する。セットに複数の要素がある場合、複数の可能な型が存在する。システムは、必要に応じて解決し、さらに型のナローイングを行うことができる。derivedFromは、これを派生させるために使用されたフィールドへの参照である。 Each field consists of two parts. basicTypes is a set of types describing the set of possible types for the field. If there is only one element in this set, its type is known. A type error occurs if the set is empty. If the set has multiple elements, there are multiple possible types. The system can resolve and further narrow the type if necessary. derivedFrom is a reference to the field that was used to derive it.

スコープ内の各フィールドには、潜在的な型のセットがある。各型は、ブール値、文字列、整数、10進数、日付、日時、倍精度浮動小数点数、ジオメトリ、および期間の任意の組み合わせであり得る。「Any」型も存在する。これは、任意の型の省略形である。 Each field in scope has a set of potential types. Each type can be any combination of boolean, string, integer, decimal, date, datetime, double, geometry, and duration. There is also an "Any" type. This is an abbreviation for any type.

オープン型環境の場合、存在しないことが判明しているフィールドである場合がある。例えば、「removeField」操作の後、システムは、型環境の全てのフィールドを(オープンであるために)認識しない可能性があるが、システムは、削除されたばかりのフィールドが存在しないことは認識している。型環境のプロパティ「非存在(NotPresent)」は、かかるフィールドを識別するために使用される。 In an open environment, it may be a field that is known not to exist. For example, after a "removeField" operation, the system may not see all the fields in the type environment (because they are open), but the system knows that the field just removed does not exist. there is The type environment property "NotPresent" is used to identify such fields.

AssumedTypesプロパティは、定義されているために追加された型ではなく、参照されているために追加された型のリストである。例えば、オープン型環境で評価される式[A]+[B]がある場合、システムはAおよびBの2つのフィールドがあると想定する。AssumedTypesプロパティを使用すると、システムはこの方法で追加された内容を追跡できる。これらのフィールドをロールアップして、さらに型を選別し、ならびにコンテナに必要なフィールドを決定することができる。 The AssumedTypes property is a list of types added because they are referenced, not types added because they are defined. For example, given an expression [A]+[B] to be evaluated in an open environment, the system assumes there are two fields, A and B. The AssumedTypes property allows the system to track content added in this way. These fields can be rolled up to further filter the types as well as determine the fields required for the container.

「過去(Previous)」型環境プロパティは、これが派生した型環境への参照である。これは、型の不整合を探すフローを逆方向にトラバースするときに、型の改良段階で使用される。 A "Previous" type environment property is a reference to the type environment from which it is derived. This is used in the type refinement stage when traversing backwards through the flow looking for type mismatches.

型環境はまた、構成することができる。これは、複数の入力を受信する操作で発生する。型環境がマージされると、各型環境がその型のコレクションの値にマッピングされる。その後、さらなる型ソリューションが個々の型環境に委任される。次に、オペレータがこの型環境を出力型環境に変換する役割を担う。多くの場合、型環境を何らかの方法で「フラット化」して、型としてフィールドのみを有する新しい型環境を作成する。 A type environment can also be configured. This happens for operations that receive multiple inputs. When the type environments are merged, each type environment is mapped to the values of that type's collection. Further type solutions are then delegated to individual type environments. The operator is then responsible for transforming this type environment into an output type environment. Often the type environment is "flattened" in some way to create a new type environment with only fields as types.

これは、Join演算子およびUnion演算子によって使用され、様々な環境の全てのフィールドを独自の式で正確に使用し、環境を出力型環境にマップする方法を提供する。 It is used by the Join and Union operators to provide a way to accurately use all fields of various environments in their own expressions and map environments to output type environments.

入力ノードによって作成された型環境は、それが読み取っているデータソースによって返されるスキーマである。SQLデータベースの場合、これは、抽出するテーブル、クエリ、ストアドプロシージャ、またはビューのスキーマになる。CSVファイルの場合、これは、ユーザが列に関連付けた型に関係なく、ファイルからプルされるスキーマになる。各列およびその型は、フィールド/型マッピングに変換される。加えて、型環境はクローズとしてマークされる。 The type environment created by an input node is the schema returned by the data source it is reading from. For SQL databases, this would be the schema of the table, query, stored procedure, or view to extract. For CSV files, this will be the schema pulled from the file regardless of the types the user has associated with the columns. Each column and its type is converted to a field/type mapping. Additionally, the type environment is marked as closed.

変換ノードの型環境は、その入力の環境である。複数の入力がある場合は、それらをマージして、操作の型環境を作成する。出力は、演算子に基づく単一型環境である。図8J-1~図8J-3の表に、多くの操作が示されている。 The type environment of a transformation node is the environment of its inputs. If there are multiple inputs, merge them to create a type environment for the operation. The output is a monotyped environment based on operators. A number of operations are shown in the tables of FIGS. 8J-1 through 8J-3.

コンテナノードは複数の入力を有し得るため、その型環境は、適切な子型環境を適切な出力ノードにルーティングする複合型環境になる。コンテナをプルして再利用すると、入力ごとに空の型環境で解決され、依存関係が判別される。 Since a container node can have multiple inputs, its type environment becomes a composite type environment that routes appropriate child type environments to appropriate output nodes. Pulling and reusing containers resolves in an empty type environment for each input to determine dependencies.

一部の実装形態では、コンテナノードは、2つ以上の出力を有することができる唯一の型のノードである。この場合、複数の出力型環境が存在する可能性がある。これは、どのノードでも発生する可能性がある出力の分岐と混同してはならない。ただし、出力を分岐する場合、出力エッジの各々は同じ型環境になる。 In some implementations, a container node is the only type of node that can have more than one output. In this case, there may be multiple output type environments. This should not be confused with branching of the output, which can occur at any node. However, when branching the output, each of the output edges will be in the same type environment.

システムがフィールドの競合する要件を検出したときに、型エラーにフラグが立てられる場合がいくつか存在する。この段階は、入力が制限されていないフローで発生する可能性があるため、未解決のフィールドはこの段階ではエラーとして扱われない。ただし、ユーザがフローを実行しようとすると、未解決の変数が問題として報告される。 There are some cases where type errors are flagged when the system detects conflicting requirements for a field. Unresolved fields are not treated as errors at this stage, as this stage can occur in flows where the input is not constrained. However, when the user tries to run the flow, the unresolved variables are reported as a problem.

入力の多くには、型の特定の定義がある。例えば、特定の定義には、VARCHAR(2000)の代わりにCHAR(10)を使用すること、フィールドが使用する照合、または10進型のスケールおよび精度が含まれる。一部の実装形態では、これらを型システムの一部として追跡しないが、ランタイム情報の一部として追跡する。 Many inputs have specific definitions of types. For example, specific definitions include using CHAR(10) instead of VARCHAR(2000), the collation the field uses, or the scale and precision of decimal types. Some implementations do not track these as part of the type system, but track them as part of the runtime information.

UIおよび中間層は、ランタイム型で取得できる。この情報は、通常のコールバックを通過するだけでなく、(例えば、システムがキャッシュされた実行からデータを入力している場合に)tempdbの型に埋め込まれる。UIは、より具体的な既知の型をユーザに表示するが、それらに基づく型チェックは行わない。これにより、より具体的な型を使用するOutputNodeを作成することができると同時に、システムの他の部分がより単純化された型を使用することができるようになる。 UI and middle tier can be obtained in runtime type. This information not only passes through normal callbacks, but is embedded in tempdb types (eg, if the system is populating data from cached executions). The UI presents the more specific known types to the user, but does not type check based on them. This allows you to create OutputNodes that use more specific types, while allowing other parts of the system to use more simplified types.

図8Dは、既知の全てのデータ型のフローに基づく単純な型チェックを示している。図8Eは、完全に既知の型による単純な型の失敗を示している。図8Fは、部分フローの単純な型環境計算を示している。図8Gは、パッケージ化されたコンテナノードの型を示している。図8Hは、より複雑な型環境シナリオを示している。図8Iは、より複雑な型環境シナリオの再利用を示している。 FIG. 8D shows a simple type check based on the flow of all known data types. FIG. 8E shows a simple type failure with a perfectly known type. FIG. 8F shows a simple type environment computation for a partial flow. FIG. 8G shows types of packaged container nodes. FIG. 8H shows a more complex type environment scenario. FIG. 8I shows reuse of a more complex type environment scenario.

一部の実装形態では、データ型を推測し、推測されたデータ型を使用してデータフローを最適化または検証する。これは、XLSファイルまたはCSVファイルなどのテキストベースのデータソースに特に役立つ。フローの後半でデータ要素がどのように使用されるかに基づいて、データ型を推測し得る場合があり、推測されたデータ型をフローの早い段階で使用できる。一部の実装形態では、テキスト文字列として受信したデータ要素を、データソースから取得した直後に適切なデータ型としてキャストすることができる。場合によっては、データ型の推測は再帰的である。つまり、1つのデータ要素のデータ型を推測することにより、システムは、1つ以上の追加のデータ要素のデータ型を推測できる。場合によっては、データ型の推測により、正確なデータ型(例えば、データ要素が数値であると判別しても、整数であるか、または浮動小数点数であるかを判別することができない型)を判別せずに1つ以上のデータ型を除外できる。 Some implementations infer data types and use the inferred data types to optimize or validate data flows. This is especially useful for text-based data sources such as XLS or CSV files. Based on how the data element is used later in the flow, it may be possible to infer the data type, and the inferred data type can be used earlier in the flow. In some implementations, data elements received as text strings can be cast as the appropriate data type immediately after being retrieved from the data source. In some cases, data type inference is recursive. That is, inferring the data type of one data element allows the system to infer the data type of one or more additional data elements. In some cases, data type inference is used to determine the exact data type (for example, a type that determines that a data element is numeric but cannot determine whether it is an integer or a floating-point number). One or more data types can be excluded without discrimination.

大部分の型エラーは、型チェック段階で発見される。これは、初期型環境を計算した直後に行われ、各型について既知であることに基づいてスコープが調整される。 Most type errors are caught during the type checking stage. This is done immediately after computing the initial type environment, adjusting the scope based on what is known about each type.

このフェーズは、全ての端末の型環境から開始する。型環境ごとに、システムは過去の環境に戻る。プロセスは、閉じた環境または過去の環境がない環境に到達するまで戻る。次に、プロセスは、各環境の型をチェックして、型が異なるフィールドがあるかどうかを判別する。その場合、それらの共通部分がnullの場合、プロセスは型エラーを発生させる。いずれかのフィールドの型が異なり、共通部分がnullでない場合、プロセスは、型を共通部分に設定し、影響を受けるノードの型環境が再計算される。加えて、「想定」されている型は全て過去の型環境に追加され、型環境が再計算される。 This phase starts with the type environment of all terminals. For each type environment, the system reverts to the past environment. The process loops back until it reaches a closed environment or an environment with no previous environment. The process then checks the type of each environment to determine if there are fields of different types. In that case, the process raises a type error if their intersection is null. If any fields have different types and the intersection is not null, the process sets the type to the intersection and the type environment of the affected nodes is recomputed. In addition, any "assumed" types are added to the previous type environment and the type environment is recomputed.

いくつかの仔細な点が追跡される。まず、ユーザはフィールドを別の任意の型で上書きすることができるため、フィールド名自体は必ずしも一意ではない。その結果、プロセスは、型からそれを生成するために使用された型へのポインタを使用し、それによってグラフの異なる部分で同じ名前に解決される無関係なものに惑わされないようにしている。例えば、フィールドAの型が[int,decimal]であるが、Aを文字列にするプロジェクトを実行するノードがあるとする。過去のバージョンのAに戻って、型が機能しないと言うことはエラーになる。代わりに、このポイントでのバックトラックは、addField操作を過ぎてもAをバックトラックしない。 A few details are tracked. First, the field name itself is not necessarily unique, since the user can overwrite the field with another arbitrary type. As a result, the process uses a pointer from the type to the type that was used to generate it, thereby avoiding getting confused by unrelated things that resolve to the same name in different parts of the graph. For example, suppose there is a node running a project where field A is of type [int, decimal], but A is a string. It is an error to go back to a previous version of A and say that the type doesn't work. Alternatively, backtracking at this point does not backtrack A past the addField operation.

型チェックにより、一度に1つの変数がナローイングされる。上記のステップでは、既知の変数を再計算する前に、型チェックが1つの変数にのみ適用される。これは、Function1(string,int)およびFunction1(int,string)など、複数のシグニチャを有するオーバーロードされた関数がある場合に安全である。これがFunction1([A],[B])として呼び出されたとする。プロセスは、型がA:[String,int]およびB:[String,int]であると判別する。ただし、AがStringの場合、Bはintである必要があるため、型がA:[String]およびB:[String]に解決されることは無効である。一部の実装形態では、型をナローイングするたびに型環境の計算を再実行することで、この型の依存関係を処理する。 Type checking narrows one variable at a time. In the above steps, type checking is only applied to one variable before recomputing the known variables. This is safe when there are overloaded functions with multiple signatures, such as Function1(string,int) and Function1(int,string). Suppose this is called as Function1([A], [B]). The process determines that the types are A: [String, int] and B: [String, int]. However, it is invalid for types to resolve to A:[String] and B:[String], because if A is a String, then B must be an int. Some implementations handle this type dependency by re-computing the type environment each time the type is narrowed.

一部の実装形態では、ナローイングされた変数を含む必須フィールドが実際にあるノードでのみ作業を行うことにより、実行する作業を最適化する。ここにはわずかに仔細な点が存在する。Aを狭くすると、Bも狭くなる可能性がある。上記のFunction1の例を参照されたい。かかる場合、システムはBがいつ変更されたかを認識し、そのナローイングもチェックする必要がある。 Some implementations optimize the work they do by working only on nodes that actually have a required field that contains a narrowed variable. There are a few subtleties here. If A is narrowed, B may also be narrowed. See the Function1 example above. In such a case the system needs to know when B has changed and also check its narrowing.

オペレータがどのように動作するかを確認する場合、ここでは「オープン(Is Open)」、「マルチ入力(Multi-Input)」、「入力型(Input Type)」、「結果型(Resulting Type)」として識別される4つの主要なプロパティの観点からそれらを考えるのが最善である。 If you want to see how the operator works, here "Is Open", "Multi-Input", "Input Type", "Resulting Type" It is best to think of them in terms of four main properties identified as .

操作は、列を通過するときにオープンとして指定される。例えば、「フィルタ」はオープン操作である。これは、入力にある全ての列が出力にも含まれるためである。集計またはグループ化されていない列は結果の型に含まれないため、Group byはオープンではない。 An operation is designated as open as it passes through the queue. For example, "filter" is an open operation. This is because all columns in the input are also included in the output. Group by is not open because columns that are not aggregated or grouped are not included in the result type.

「マルチ入力」プロパティは、この操作が複数の入力エンティティを受信するかどうかを指定する。例えば、結合は2つのエンティティを取り、それらを1つにするため、マルチ入力である。ユニオンは、マルチ入力の別の操作である。 The "multi-input" property specifies whether this operation receives multiple input entities. For example, a join is multi-input because it takes two entities and makes them one. Union is another operation on multiple inputs.

「入力型」プロパティは、ノードに必要な型を指定する。マルチ入力操作の場合、これは各入力に独自の型が含まれる複合型である。 The "input type" property specifies the type required for the node. For multi-input operations, this is a composite type where each input has its own type.

「結果型」プロパティは、この操作の結果として生じる出力型を指定する。 The "result type" property specifies the resulting output type of this operation.

図8J-1、図8J-2、および図8J-3の表は、最も一般的に使用される多くの演算子のプロパティを示している。 The tables in Figures 8J-1, 8J-2, and 8J-3 show the properties of many of the most commonly used operators.

多くの場合、フローは、ニーズの変化に応じて時間の経過とともに作成される。フローが有機的な進化によって成長する場合、それは大きくて複雑になる可能性がある。ユーザは、変化するニーズに対応するため、またはフローを再編成して理解しやすくするために、フローを変更する必要があり得る。かかるフローのリファクタリングは、多くのETLツールでは困難または不可能である。 Flows are often created over time as needs change. When flow grows by organic evolution, it can be large and complex. A user may need to modify the flow to meet changing needs or to reorganize the flow to make it easier to understand. Such flow refactoring is difficult or impossible with many ETL tools.

本実装形態は、リファクタリングを可能にするだけでなく、ユーザがリファクタリングを行うのを支援する。ある技術レベルでは、システムは任意のノード(またはノードのシーケンス)のRequireFieldsを取得し、それに対応できる型環境を有する任意のポイントでドロップターゲットを点灯させることができる。 This implementation not only allows refactoring, but also helps the user to do so. At one technical level, the system can take the RequireFields of any node (or sequence of nodes) and light a drop target at any point that has a type environment to support it.

別のシナリオでは、フロー内の既存のノードが再利用される。例えば、ユーザが一連の操作を実行してカスタムノードの作成を望んでいるとする。カスタムノードは、「保険コードの正規化」を行うように動作する。ユーザは、複数の操作を含むコンテナノードを作成することができる。その後、システムはそれに必要なフィールドを計算することができる。ユーザは、saveコマンドを使用するか、コンテナノードを左側ペイン312にドラッグすることにより、将来の使用のためにノードを保存することができる。ここで、左側ペインのパレットからノードを選択すると、システムがフロー内のドロップターゲットを点灯し、ユーザは、(例えば、上記のリファクタリングの例のように)ノードをドロップターゲットの1つにドロップすることができる。 In another scenario, existing nodes in the flow are reused. For example, suppose a user wishes to perform a series of operations to create a custom node. The custom node acts to do "insurance code normalization". A user can create a container node that contains multiple operations. The system can then calculate the fields it requires. A user can save a node for future use by using the save command or by dragging a container node to left pane 312 . Now when you select a node from the palette in the left pane, the system lights up the drop targets in the flow and the user can drop the node onto one of the drop targets (e.g. as in the refactoring example above). can be done.

ETLは煩雑になる可能性があるため、本実装形態により、様々なシステム拡張機能が可能になる。拡張機能として、以下が挙げられる。
●ユーザ定義のフロー操作。ユーザは、入力、出力、および変換操作を使用してデータフローを拡張することができる。これらの操作では、カスタムロジックまたは分析を使用して、行の内容を変更することができる。
●制御フロースクリプト。ユーザは、共有からのファイルのダウンロード、ファイルの解凍、ディレクトリ内の全てのファイルのフローの実行など、データフロー以外の操作を実行するスクリプトを構築することができる。
●コマンドラインスクリプト。ユーザはコマンドラインからフローを実行することができる。
Since ETL can be cumbersome, this implementation allows for a variety of system extensions. Extensions include:
● User-defined flow operations. Users can extend the dataflow with input, output and transformation operations. These operations can use custom logic or analytics to change the contents of the row.
● Control flow scripts. Users can build scripts that perform operations other than dataflows, such as downloading files from shares, unzipping files, and running flows for all files in a directory.
● Command line scripts. Users can run flows from the command line.

本実装形態は、提供された拡張性を人々がどのように使用するかという点で、言語に依存しないアプローチを採用している。 The implementation takes a language-agnostic approach to how people use the extensibility provided.

最初の拡張機能により、ユーザは、フローに適合するカスタムノードを構築することができる。拡張ノードの作成には、次の2つの部分がある。
●出力の型を定義する。例えば、「新しい列「foo」だけでなく、到着する全てのもの」などである。
●実際に変換を実行するためのスクリプトまたは実行可能ファイルを提供する。
The first extension allows users to build custom nodes that fit the flow. There are two parts to creating an extension node:
● Define the output type. For example, "everything that arrives, not just the new string 'foo'".
● Provide a script or executable to actually perform the conversion.

一部の実装形態では、ユーザ定義の拡張を可能にする2つのノード型を定義している。「ScriptNode」は、ユーザが行を操作してそれらを返すためのスクリプトを記述できるノードである。システムはAPI関数を提供する。その後、ユーザは変換(または入力または出力)ノードをスクリプトとして(PythonまたはJavascriptなどで)作成することができる。「ShellNode」は、ユーザが実行する実行可能プログラムを定義し、行を実行可能ファイルにパイプすることができるノードである。次に、実行可能プログラムにより、結果がstdoutに書き込まれ、エラーがstderrに書き込まれ、完了したら終了される。 Some implementations define two node types that allow for user-defined extensions. "ScriptNode" is a node where the user can write scripts to manipulate rows and return them. The system provides API functions. The user can then create a transform (or input or output) node as a script (such as in Python or Javascript). A "ShellNode" is a node where a user can define an executable program to run and pipe lines to the executable. The executable then writes results to stdout, errors to stderr, and exits when complete.

ユーザがフローの拡張機能を作成する場合、内部処理はより複雑になる。全てを1つのAQLステートメントにコンパイルする代わりに、プロセスは評価をカスタムノードの周りの2つの部分に分割し、最初の部分からの結果をノードに送信する。これは、図8Kおよび図8Lに示されており、ユーザ定義ノード850により、フローが2つの部分に分割される。フロー評価中に、ユーザ定義スクリプトノード852は、フローの第1の部分からデータを受信し、フローの第2の部分に出力を提供する。 Internal processing becomes more complex when users create flow extensions. Instead of compiling everything into one AQL statement, the process splits the evaluation into two parts around the custom node and sends the result from the first part to the node. This is illustrated in Figures 8K and 8L, where a user-defined node 850 divides the flow into two parts. During flow evaluation, user-defined script node 852 receives data from the first part of the flow and provides output to the second part of the flow.

フローデータを何らかの方法で変更するカスタマイズに加えて、ユーザは、フローの実行方法を制御するスクリプトを作成することができる。例えば、ユーザがスプレッドシートを毎日公開している共有からデータをプルする必要があるとする。定義されたフローでは、CSVまたはExcelファイルの処理方法はすでに既知である。ユーザは、リモート共有を反復処理し、関連するファイルをプルダウンしてから、それらのファイルを実行する制御スクリプトを作成することができる。 In addition to customizations that change the flow data in some way, users can create scripts that control how the flow runs. For example, suppose a user needs to pull data from a share that publishes a spreadsheet daily. In the defined flow, we already know how to handle CSV or Excel files. A user can create a control script that iterates through a remote share, pulls down the relevant files, and then executes those files.

パターンユニオンなど、ユーザがデータフローノードに追加できる多数一般的な操作が存在する。ただし、テクノロジーが進化し続けるにつれて、常に、システム定義のデータフローノードに対応していないデータを取得または保存する方法が存在する。これらは、制御フロースクリプトが適用可能な場合である。これらのスクリプトは、フローの一部として実行される。 There are many common operations that users can add to dataflow nodes, such as pattern union. However, as technology continues to evolve, there will always be ways to retrieve or store data that do not correspond to system-defined dataflow nodes. These are the cases where control flow scripts are applicable. These scripts are executed as part of the flow.

上記のように、フローはコマンドラインから呼び出すこともできる。これにより、他のプロセスまたは夜間のジョブにスクリプトを埋め込むことができる。 As mentioned above, flows can also be invoked from the command line. This allows you to embed scripts in other processes or nightly jobs.

実装形態には、多くの便利な機能を提供するフロー評価プロセスがある。これらの機能には、以下が含まれる。
●フローを最後まで実行する。
●順序または「固定」操作を確実にするために、フローを分割する。
●フローを分割して、サードパーティのコードを実行することができるようにする。
●フローを実行するが、アップストリームのデータソースに戻るのではなく、過去に実行したフローの出力からフローを実行する。
●フローの一部を事前実行して、ローカルキャッシュにデータを入力する。
Implementations have a flow evaluation process that provides many useful features. These features include:
● Execute the flow to the end.
● Split the flow to ensure order or "fixed" operations.
● Break up the flow so that you can run third-party code.
● Run a flow, but run it from the output of a previously run flow, instead of going back to the upstream data source.
● Pre-run parts of the flow to populate the local cache.

評価プロセスは、論理モデルと物理モデルとの間のインタラクションに基づいて機能する。具現化された物理モデルは、フローの開始点になる。ただし、言語ランタイムは、実行するフローのサブセクションを定義するための抽象化を提供する。概して、ランタイムは、サブフローおよびフルフローをいつ実行するかを決定するものではない。それは、他のコンポーネントによって決定される。 The evaluation process works based on the interaction between the logical model and the physical model. The embodied physical model becomes the starting point for the flow. However, the language runtime provides an abstraction for defining subsections of the flow to execute. In general, the runtime does not decide when to run subflows and fullflows. It is determined by other components.

図8Mは、フロー全体の実行が、入力ノードおよび出力ノードでの暗黙の物理モデルから開始することを示している。図8Nは、部分フローを実行すると、物理モデルが結果とともに具現化されることを示している。図8Oは、過去の結果に基づいたフローの実行部分を示している。 FIG. 8M shows that execution of the entire flow begins with implicit physical models at the input and output nodes. FIG. 8N shows that the physics model is instantiated with the result when executing the partial flow. FIG. 8O shows the execution portion of the flow based on past results.

物理モデルを並べ替えして処理を最適化することができるが、論理モデルは一般的に関連性がないため、これらの詳細をユーザから隠す。フローエバリュエータは、ノードがフローに表示されている順序で評価されているように見せる。ノードが固定されている場合、実際にはフローがそこで具現化され、左側の部分が右側の部分よりも先に評価されることが保証される。フォークフローでは、一般的なプリフローは1回だけ実行される。このプロセスは、冪等性である。つまり、失敗によって入力演算子が再度呼び出されても失敗しないことを意味する。返されるデータが最初のデータとまったく同じである必要はない(つまり、アップストリームデータソースのデータが1回目の試行と2回目の試行との間で変更された場合)ことに留意されたい。 The physical model can be reordered to optimize processing, but the logical model is generally irrelevant and hides these details from the user. A flow evaluator makes it appear that the nodes are evaluated in the order they appear in the flow. If the node is fixed, then in fact the flow is implemented there and it is guaranteed that the left part will be evaluated before the right part. In fork flow, general preflow is performed only once. This process is idempotent. This means that if a failure causes the input operator to be called again, it will not fail. Note that the returned data does not have to be exactly the same as the original data (ie, if the data in the upstream data source changed between the first and second attempts).

変換演算子の実行には副次的な効果はない。一方、抽出演算子は典型的に、副次的な効果を有する。フロー内のデータソースの前にデータソースを変更する操作は、フローの次の実行まで表示されない。読み込み演算子には概して、副次的な効果はないが、例外がある。実際、一部の読み込み演算子には、副次的な効果を必要とする。例えば、共有からファイルをプルダウンして解凍すると、副次的な効果と見なされる。 Execution of the conversion operator has no side effects. Extraction operators, on the other hand, typically have side effects. Operations that change the datasource before the datasource in the flow do not appear until the next run of the flow. Read operators generally have no side effects, but there are exceptions. In fact, some read operators require side effects. For example, pulling down and unzipping a file from a share is considered a side effect.

一部の実装形態では、列名に関して大文字と小文字とが区別されるが、そうでない実装形態もある。一部の実装形態では、列名で大文字と小文字とを区別するかどうかを指定するためのユーザ構成可能なパラメータが提供される。 Some implementations are case sensitive with respect to column names, while others are not. In some implementations, a user-configurable parameter is provided to specify whether column names are case sensitive.

概して、キャッシュされたオブジェクトのビューは常に時間的に「前進」する。 In general, cached views of objects always "forward" in time.

図8Pおよび図8Qは、固定されたノード860を用いたフローの評価を示している。フロー評価中、ピンの前のノードが最初に実行されてユーザノード結果862が作成され、ユーザノード結果862がフローの後半部分で使用される。固定は、各々の部分内での実行の再配置を妨げるものではないことに留意されたい。固定されたノードは、事実上、論理的なチェックポイントである。 FIGS. 8P and 8Q illustrate flow evaluation with fixed node 860. FIG. During flow evaluation, the node before the pin is executed first to produce a user node result 862, which is used later in the flow. Note that fixation does not prevent relocation of execution within each part. A fixed node is effectively a logical checkpoint.

ユーザによって固定されたノードに加えて、一部のノードは、実行する操作に基づいて本質的に固定される。例えば、ノードがカスタムコード(Javaプロセスなど)を呼び出す場合、論理操作をノード間で移動することはできない。カスタムコードは「ブラックボックス」であるため、その入力および出力は明確に定義する必要がある。 In addition to nodes that are pinned by the user, some nodes are inherently pinned based on the operations they perform. For example, if a node calls custom code (such as a Java process), logical operations cannot be moved between nodes. Custom code is a "black box", so its inputs and outputs must be clearly defined.

場合によっては、操作を移動することでパフォーマンスを向上させることができるが、一貫性が低下するという副次的な効果が発生する。場合によっては、ユーザは一貫性を保証する方法として固定を使用することができるが、パフォーマンスが犠牲になる。 In some cases, moving operations can improve performance, but has the side effect of reducing consistency. In some cases, users can use pinning as a way to ensure consistency, but at the cost of performance.

上記のように、ユーザは、データグリッド315で直接データ値を編集することができる。場合によっては、システムにより、ユーザの編集に基づいて一般的なルールが推測される。例えば、ユーザが、文字列「19」をデータ値「75」に追加して「1975」を作成する場合がある。システムは、データおよびユーザの編集内容に基づいて、ユーザが文字列を記入して、世紀が欠けている2つの文字年号に対して4つの文字年号を形成することを望んでいるというルールを推測することができる。場合によっては、推測は、変更自体のみに基づいて行われる(例えば、「19」を先頭に追加)が、他の場合には、システムは列のデータ(例えば、列の値が「74」-「99」であること)にも基づいて推測を行う。一部の実装形態では、列内の他のデータ値にルールを適用する前に、ユーザはルールを確認するように求められる。一部の実装形態では、ユーザは、同じルールを他の列に適用することも選択することができる。 As noted above, a user can edit data values directly in the data grid 315 . In some cases, the system infers general rules based on the user's edits. For example, a user may add the string "19" to the data value "75" to create "1975". The system, based on the data and the user's edits, rules that the user wants to fill in a string to form 4 character years for 2 character years with a missing century. can be inferred. In some cases, the inference is based solely on the change itself (e.g., prepending "19"), while in other cases, the system assumes that the column data (e.g., if the column value is "74" - '99'). In some implementations, the user is asked to confirm the rule before applying the rule to other data values in the column. In some implementations, the user can also choose to apply the same rule to other columns.

ユーザによるデータ値の編集には、ここで説明したように、現在のデータ値に追加するか、文字列の一部を削除するか、特定の部分文字列を別の部分文字列に置き換えるか、またはこれらの任意の組み合わせを含めることができる。例えば、電話番号は、(XXX)YYY-ZZZZなどの様々なフォーマットで指定することができる。ユーザは、1つの特定のデータ値を編集して括弧とダッシュを削除し、ドットを追加してXXX.YYY.ZZZZを作成する場合がある。システムは、データ値を編集する単一のインスタンスに基づいてルールを推測し、列全体にルールを適用することができる。 Editing a data value by the user includes appending to the current data value, deleting part of a string, replacing one substring with another substring, or or any combination of these. For example, phone numbers can be specified in various formats, such as (XXX)YYY-ZZZZ. The user edits one particular data value to remove brackets and dashes and add dots to XXX. YYY. ZZZZ may be created. The system can infer rules based on a single instance of editing a data value and apply rules across columns.

別の例として、数値フィールドにもルールを推測することができる。例えば、ユーザが負の値をゼロに置き換えると、システムは、全ての負の値をゼロにする必要があると推測してもよい。 As another example, rules can be inferred for numeric fields as well. For example, if the user replaces negative values with zeros, the system may infer that all negative values should be zeroed.

一部の実装形態では、2つ以上のデータ値が共有ルールに従ってデータグリッド315の単一の列で編集されるときにルールが推測される。 In some implementations, rules are inferred when two or more data values are edited in a single column of data grid 315 according to a sharing rule.

図9は、操作が命令型として指定されているか宣言型として指定されているかに応じて、論理フロー323を様々な方法で実行する方法を示している。このフローには、データセットA902およびデータセットB904の2つの入力データセットが存在する。このフローでは、これらのデータセットはデータソースから直接取得される。フローによれば、2つのデータセット902および904は、結合操作906を使用して組み合わされて、中間データセットを生成する。結合操作の後、フロー323は、フィルタ908を適用する。これにより、結合操作906によって作成された第1の中間データセットよりも少ない行で、別の中間データセットが作成される。 FIG. 9 illustrates how logic flow 323 is executed in different ways depending on whether the operation is specified as imperative or declarative. There are two input datasets in this flow, dataset A 902 and dataset B 904 . In this flow, these datasets are retrieved directly from the data source. According to flow, two datasets 902 and 904 are combined using a join operation 906 to produce an intermediate dataset. After the join operation, flow 323 applies filter 908 . This creates another intermediate data set with fewer rows than the first intermediate data set created by join operation 906 .

このフロー内の全てのノードが必須として指定されている場合、フローを実行すると、ノードが指定したとおりに実行される。データセット902および904はデータソースから取得され、これらのデータセットはローカルで組み合わされ、次に行数がフィルタによって削減される。 If all nodes in this flow are marked as required, then when you run the flow, the nodes will be executed exactly as you specified them. Data sets 902 and 904 are obtained from data sources, these data sets are locally combined, and then the number of rows is reduced by a filter.

このフロー内のノードが宣言型実行(概してデフォルト)を有するように指定されている場合、実行オプティマイザにより、物理フローが再編成され得る。第1のシナリオでは、データセット902および904は別個のデータソースからのものであり、フィルタ908がデータセットA902のフィールドにのみ適用されると想定している。この場合、フィルタをデータセットA902を取得したクエリにプッシュバックすることができるため、取得および処理されるデータの量を減らすことができる。これは、データセットA902がリモートサーバーから取得され、かつ/またはフィルタによって著しい数の行が削除される場合に特に役立つ。 If nodes in this flow are specified to have declarative execution (generally the default), the execution optimizer may reorganize the physical flow. A first scenario assumes that data sets 902 and 904 are from separate data sources and that filter 908 is applied only to fields of data set A 902 . In this case, filters can be pushed back to the query that retrieved dataset A 902, thus reducing the amount of data retrieved and processed. This is particularly useful when data set A 902 is obtained from a remote server and/or the filter removes a significant number of rows.

第2のシナリオでは、再び宣言型の実行が想定されるが、データセットA902およびデータセットB902の両方が同じデータソースから取得されると想定する(例えば、これらのデータセットの各々は、同じデータベースサーバー上の同じデータベース内のテーブルに対応する)。この場合、フローオプティマイザは実行全体をリモートサーバーにプッシュバックし、2つのテーブルを結合し、フィルタノード908によって指定されたフィルタ操作を適用するWHERE句を含む単一のSQLクエリを構築することができる。この実行の柔軟性により、全体的な実行時間を大幅に短縮することができる。 In a second scenario, declarative execution is again assumed, but assuming that both dataset A 902 and dataset B 902 are obtained from the same data source (e.g., each of these datasets is stored in the same database corresponding to a table in the same database on the server). In this case, the flow optimizer can push the entire execution back to the remote server and build a single SQL query with a WHERE clause that joins the two tables and applies the filter operation specified by the filter node 908. . This flexibility in execution can significantly reduce overall execution time.

ユーザは、時間の経過とともにデータフローを構築および変更するため、一部の実装形態では、増分フロー実行が提供される。各ノードの中間結果が保存され、必要な場合にのみ再計算される。 Because users build and modify dataflows over time, incremental flow execution is provided in some implementations. Intermediate results for each node are saved and recomputed only when needed.

ノードを再計算する必要があるかどうかを判別するために、一部の実装形態ではフローハッシュおよびベクタークロックを使用する。フロー323の各ノードは、それ自身のフローハッシュおよびベクトルクロックを有する。 To determine if a node needs to be recomputed, some implementations use flow hashes and vector clocks. Each node in flow 323 has its own flow hash and vector clock.

特定のノードのフローハッシュは、特定のノードまでのフロー内の全ての操作を識別するハッシュ値である。フロー定義のいずれかの態様が変更(例えば、ノードの追加、ノードの削除、またはいずれかのノードでの操作の変更)された場合、ハッシュは異なるものとなる。フローハッシュはフロー定義を追跡するだけであり、基になるデータは調べないことに留意されたい。 A flow hash for a particular node is a hash value that identifies all operations in the flow up to the particular node. If any aspect of the flow definition is changed (eg, adding nodes, deleting nodes, or changing operations on any node), the hash will be different. Note that the flow hash only keeps track of the flow definition and does not look at the underlying data.

ベクタークロックは、ノードが使用するデータのバージョン管理を追跡する。特定のノードが複数のソースからのデータを使用する可能性があるため、これはベクトルである。データソースには、特定のノードまでの任意のノードによってアクセスされる任意のデータソースが含まれる。ベクトルには、データソースの各々の単調に増加するバージョン値が含まれる。場合によっては、単調に増加する値は、データソースからのタイムスタンプである。値はデータソースに対応するものであり、データがフロー内のノードによって処理されたときのものではないことに留意されたい。場合によっては、データソースは、単調に増加するバージョン値を提供できる(例えば、データソースは編集タイムスタンプを有する)。データソースがかかるバージョン数を提供することができない場合、データプレップアプリケーション250は、(例えば、いつクエリがデータソースに送信されたか、またはいつデータソースから取得されたかの)代理値を計算する。概して、データプレップアプリケーションが最後にデータを照会した日時を示す値ではなく、データが最後に変更された日時を示すバージョン値を使用することが好ましい。 Vector clocks track versioning of data used by nodes. This is a vector because a particular node may use data from multiple sources. A data source includes any data source accessed by any node up to a particular node. The vector contains a monotonically increasing version value for each of the data sources. In some cases, the monotonically increasing values are timestamps from the data source. Note that the values correspond to the data source, not when the data is processed by the nodes in the flow. In some cases, a data source can provide a monotonically increasing version value (eg, the data source has edit timestamps). If the data source cannot provide such a version number, data prep application 250 computes a proxy value (e.g., when the query was sent to or retrieved from the data source). In general, it is preferable to use a version value that indicates when the data was last modified rather than a value that indicates when the data prep application last queried the data.

フローハッシュおよびベクトルクロックを使用することにより、データプレップアプリケーション250は、再計算の必要があるノードの数を制限する。 By using flow hashes and vector clocks, data prep application 250 limits the number of nodes that need to be recalculated.

図10は、一部の実装形態による、複数の非同期クエリから取得された結果セットの高水準点を確立するプロセスを示している。4本の棒の各群は、ある時点を表し、時間は、T、T、T、およびTの順序で増加する。各群の4つのバーは、非同期で実行されている4つの異なるクエリの部分的な結果を表している。各群の点線は、全てのクエリでデータソースから取得されたデータの行を表している。点線は、高水準点と称されることもある。高水準点は典型的に、一意の識別子で指定される。一部の実装形態では、一意の識別子は、データソースからの主キー値である。例えば、4つのクエリの各々が同じデータソースから主キーの順序でデータを取得する場合、主キーの値を高水準点として使用できる。一部の実装形態では、一意の識別子は、行番号である。 FIG. 10 illustrates a process of establishing a high water mark for result sets obtained from multiple asynchronous queries, according to some implementations. Each group of four bars represents a time point, with increasing times in the order T 1 , T 2 , T 3 and T 4 . The four bars in each group represent the partial results of four different queries running asynchronously. Each group of dotted lines represents the rows of data retrieved from the data source for all queries. The dotted line is sometimes referred to as the high water mark. A high water mark is typically designated with a unique identifier. In some implementations, the unique identifier is the primary key value from the data source. For example, if four queries each retrieve data from the same data source in primary key order, the primary key value can be used as the high water mark. In some implementations, the unique identifier is a line number.

第1の時間Tにおいて、第4の結果セット1008-1は、4つの結果セット1002-1、1004-1、1006-1、および1008-1の中で最小の行を有している。よって、Tでの高水準点1010-1は、第4の結果セット1008-1によって決定される。第2の時間Tでは、第2の結果セット1004-2および第3の結果セット1006-2についてより多くの結果が受信されたが、第1の結果セット1002-2および第4の結果セット1008-2は同じままである。このため、高水準点1010-2も同じままである。第3の時間Tにおいて、第1の結果セット1002-3は追加のデータ行を受信したが、第2の結果セット1004-3、第3の結果セット1006-3、および第4の結果セット1008-3は同じままである。このため、高水準点1010-3も同じままである。第4の時間T4において、第1の結果セット1002-4、第2の結果セット1004-4、および第3の結果セット1006-4は同じままであるが、第4の結果セット1008-4では追加の行が取得される。この時点で、第4の結果セット1008-4の行は、第2の結果セット1004-4の行よりも多いので、高水準点1010-4は、第2の結果セット1004-4によって決定される。 At the first time T 1 , the fourth result set 1008-1 has the fewest rows among the four result sets 1002-1, 1004-1, 1006-1 and 1008-1. Thus, the high water mark 1010-1 at T 1 is determined by the fourth result set 1008-1. At a second time T2 , more results were received for the second result set 1004-2 and the third result set 1006-2, while the first result set 1002-2 and the fourth result set 1008-2 remains the same. Therefore, the high water mark 1010-2 remains the same. At a third time T3 , the first result set 1002-3 received additional rows of data, but the second result set 1004-3, the third result set 1006-3, and the fourth result set 1008-3 remains the same. Therefore, the high water mark 1010-3 remains the same. At a fourth time T4, the first result set 1002-4, the second result set 1004-4, and the third result set 1006-4 remain the same, but the fourth result set 1008-4 Additional rows are retrieved. At this point, the fourth result set 1008-4 has more rows than the second result set 1004-4, so the high water mark 1010-4 is determined by the second result set 1004-4. be.

一部の実装形態では、クエリのいずれかで新しい行が受信されると、高水準点の再計算がトリガーされる。一部の実装形態では、高水準点の再計算は、タイマー(例えば、1秒に1回)に基づいてトリガーされる。タイマーを使用する一部の実装形態では、最初のテストで、最新の更新(またはテスト)以降に結果セットが変更されたかどうかを判別する。一部の実装形態では、タイミング間隔は非線形である。例えば、1/2秒後に第1のテスト/更新を実行し、さらに1秒後に第2のテスト/更新を実行し、さらに2秒後に第3の更新を実行する。 In some implementations, a recalculation of the high water mark is triggered when a new row is received in any of the queries. In some implementations, recalculation of the high water mark is triggered based on a timer (eg, once per second). In some implementations that use timers, the first test determines if the result set has changed since the last update (or test). In some implementations, the timing intervals are non-linear. For example, a first test/update after 1/2 second, a second test/update after 1 second, and a third update after 2 seconds.

図11は、一部の実装形態に従って、データがデータソースから読み込まれている間にデータプレパレーションユーザインターフェースがどのように更新されるかを示している。コンピュータシステム200は、データプレップアプリケーション250と、部分的なクエリ結果を格納するキャッシュ1112とを含む。データプレップアプリケーション250は、ユーザインターフェース100を表示し、これにより、ユーザは、データベース240に格納されたデータソースから受信したデータと対話し、それを変更することができる。データベース240は、コンピュータシステム200に格納され得るか、またはリモートで(例えば、データベースサーバー上に)格納され得る。データは、複数の非同期クエリ1120を使用して取得され、部分的なクエリ結果1122として(例えば、データプレップアプリケーション250によって指定されたブロックで)受信される。典型的に、クエリの各々の初期ブロックは小さいため、データをユーザインターフェースに迅速に読み込むことができる。これにより、ユーザはデータの操作を直ちに開始できる。ブロックサイズは、典型的には増加し、例えば、行のブロックが受信されるたびに2倍になる。 FIG. 11 illustrates how the data preparation user interface is updated while data is being read from the data source, according to some implementations. Computer system 200 includes a data prep application 250 and a cache 1112 that stores partial query results. The data prep application 250 displays the user interface 100 that allows the user to interact with and modify the data received from the data sources stored in the database 240 . Database 240 may be stored on computer system 200 or may be stored remotely (eg, on a database server). Data is retrieved using multiple asynchronous queries 1120 and received as partial query results 1122 (eg, in blocks specified by data prep application 250). Typically, the initial block of each query is small so that the data can be quickly loaded into the user interface. This allows the user to immediately begin manipulating the data. The block size typically increases, eg, doubling each time a block of rows is received.

データ更新モジュール1110は、データの新しい行が到着すると、ユーザインターフェース100を更新する。データリフレッシュモジュール1110には複数の態様が存在する。まず、実装形態はデータ更新モジュールの実行時間を構成することができる。一部の実装形態では、データ更新モジュールは、クエリ1120のいずれかについてデータの新しい行が受信されるたびに実行される。一部の実装形態では、データ更新モジュールはタイマー(例えば、1秒に1回)によってトリガーされる。タイマーによってトリガーされる一部の実装形態では、最初のテストが実行され、データ更新モジュールが最後に実行されてから結果セットのいずれかが変更されたかどうかが判別される。次に、データ更新モジュールは高水準点を計算し、それを過去の高水準点と比較する。それらが同じである場合、この時点で実行するアクションはない。 The data update module 1110 updates the user interface 100 as new rows of data arrive. There are multiple aspects of the data refresh module 1110 . First, implementations can configure the execution time of the data update module. In some implementations, the data update module is executed each time a new row of data is received for any of the queries 1120. In some implementations, the data update module is triggered by a timer (eg, once per second). In some timer-triggered implementations, an initial test is performed to determine if any of the result sets have changed since the data update module was last run. The data update module then calculates the high water mark and compares it to the past high water marks. If they are the same, no action is taken at this point.

高水準点が変化している場合、データ更新モジュール1110は、新しい高水準点に従ってユーザインターフェース100を更新する。データが表示される全ての場所(例えば、図13のヒストグラム1310などのプロファイルペインのデータ値ヒストグラム)で、データが更新される。場合によっては、図12および図13に示すように、ユーザはデータを編集し、かつ/または、データの表示方法に関するパラメータを変更するためのアクション(スクロール位置またはオブジェクトの選択など)を実行する。これらの場合、データ更新モジュール1110は、ユーザが見ているもの(例えば、ユーザインターフェース100にワイルドジャンプがないこと)を保持するために、データ変更およびビューパラメータに従ってデータを更新する。 If the high water mark has changed, the data update module 1110 updates the user interface 100 according to the new high water mark. Data is updated everywhere the data is displayed (eg, the data value histogram in the profile pane, such as histogram 1310 in FIG. 13). In some cases, as shown in FIGS. 12 and 13, the user edits the data and/or performs actions (such as scroll position or object selection) to change parameters of how the data is displayed. In these cases, data update module 1110 updates data according to data changes and view parameters to preserve what the user sees (eg, no wild jumps in user interface 100).

図12は、一部の実装形態による、データプレパレーションユーザインターフェースで部分的に読み込まれたデータとのユーザインタラクションと、追加データが非同期で到着したときのユーザインターフェースへの後続の更新とを示している。図11に示されるように、部分的な結果1122は、データベース240から取得され、キャッシュ1112に格納される。キャッシュからのデータにより、1回目に1200-1でユーザインターフェース100が更新される。一部のデータが表示されると、ユーザは、データのフィルタ処理、特定のデータの除外、データのブラッシング、列の削除、新しい列の追加、列の名前の変更、列のデータ型の変更、または列への変換関数の適用など、データに変更1212を加えることができる。これらの変更は、2回目の1200-2でデータに適用される。データ(またはデータの表示)に対するこれらの変更は、キャッシュと現在の高水準点に基づいている。この変更はまた、(例えば、対応するフローダイアグラムのうちの1つ以上のノードの一部として)一連の格納された操作1214として格納される。追加のデータが受信され、高水準点が変更されると、データ更新モジュール1110は、キャッシュから更新された行のセット(新しい高水準点まで)を使用し、格納された操作1214を取得されたデータに適用して、ユーザインターフェース100を更新(1216)する。このようにして、3回目の1200-3でも、ユーザには変更が表示され、変更はデータの新しい行に適用される。換言すれば、更新されたデータによってユーザのアクション1212が元に戻されるか、取り消されるか、または無視されることはない。 FIG. 12 illustrates user interaction with partially loaded data in a data preparation user interface and subsequent updates to the user interface when additional data arrives asynchronously, according to some implementations. there is As shown in FIG. 11, partial results 1122 are retrieved from database 240 and stored in cache 1112 . The user interface 100 is updated at 1200-1 for the first time with data from the cache. Once some data is displayed, the user can filter the data, exclude certain data, brush the data, remove columns, add new columns, rename columns, change column data types, Or changes 1212 can be made to the data, such as applying a transformation function to the columns. These changes are applied to the data a second time 1200-2. These changes to the data (or representation of data) are based on the cache and the current high water mark. This change is also stored as a series of stored operations 1214 (eg, as part of one or more nodes of the corresponding flow diagram). As additional data is received and the high water mark changes, the data update module 1110 uses the updated set of rows (up to the new high water mark) from the cache to retrieve the stored operations 1214. The data is applied to update 1216 the user interface 100 . Thus, a third time, 1200-3, the change is still displayed to the user, and the change is applied to the new row of data. In other words, updated data does not undo, undo, or ignore the user's action 1212 .

図13は、一部の実装形態による、データプレパレーションユーザインターフェースのプロファイルペインの例である。プロファイルペインには、フィールド「曜日」(事故データセットで各々の事故が発生した曜日を識別する)のヒストグラム1310など、表示された各データフィールドのデータ値ヒストグラムが含まれる。データ値ヒストグラムの各バーは、個々のデータ値またはデータ値の範囲に対応する「ビン」である。ディメンションデータフィールドの場合、典型的に、各ビンには単一のデータ値があるが、数値フィールドは典型的に、値の範囲によってビニングされる。 FIG. 13 is an example profile pane of a data preparation user interface, according to some implementations. The profile pane includes a data value histogram for each data field displayed, such as histogram 1310 for field "day of the week" (which identifies the day of the week on which each accident occurred in the accident data set). Each bar in the data value histogram is a "bin" corresponding to an individual data value or range of data values. For dimensional data fields, each bin typically has a single data value, whereas numeric fields are typically binned by a range of values.

Stateデータフィールドには、カリフォルニア州のビン1302を含む、州ごとのビンがある。ユーザは、カリフォルニア州のビン1302を選択し、カリフォルニア州で事故が発生した事故テーブルの行のみにディスプレイ州をフィルタ処理することができる(またはカリフォルニア州の行を除外することができる)。選択が行われると、他のデータフィールドのデータ値ヒストグラムには、ブラッシングが使用され、各バーのどの割合がState=「California」の行に対応するかが示される。 The State data field has bins for each state, including bin 1302 for California. The user can select the California bin 1302 to filter the display state to only those accident table rows where accidents occurred in California (or exclude California rows). Once the selection is made, the data value histograms for the other data fields use brushing to show what percentage of each bar corresponds to the State=“California” row.

ユーザは、列を削除するか、または列の名前を変更することができる。例えば、ユーザは、「Road Fnc」列1304を選択して、それをディスプレイから取り除くことができる。代替的に、ユーザは、「Road Condition」など、異なる列名を選択することもできる。場合によっては、選択したデータフィールドのデータ型を変更することも理にかなっている。ユーザは、場所1306に新しい列を追加するなど、新しい列を追加することもできる。新しい列を追加する場合、その列のデータは通常、他の列の関数として表される。例えば、各行のStateデータの値に対応する2文字の州の略語を計算する列を新たに追加する。 The user can delete columns or rename columns. For example, the user can select the "Road Fnc" column 1304 to remove it from the display. Alternatively, the user can select a different column name, such as "Road Condition". In some cases it makes sense to change the data type of the selected data field. The user can also add new columns, such as adding a new column to place 1306 . When adding a new column, the data in that column is usually expressed as a function of other columns. For example, add a new column that computes the two-letter state abbreviation for each row's State data value.

ユーザは、既存の列のデータ値を変更することもできる。例えば、曜日のデータ値1312は、このデータセットの数値1~7として符号化されている。多くのユーザにとって、これらを曜日の名前に変換すると便利である(例えば、1を「月曜日」に置き換え、2を「火曜日」に置き換えるなど)。ユーザは、データプレップユーザインターフェース100のプロファイルペインにおいて、データに対して直接これらの編集を行うことができる。 The user can also change the data values of existing columns. For example, the day of the week data values 1312 are encoded as numbers 1-7 in this data set. Many users find it convenient to convert these to the names of the days of the week (eg, replace 1 with "Monday", replace 2 with "Tuesday", etc.). A user can make these edits directly to the data in the Profile pane of the DataPrep user interface 100 .

これらの変更は全て、格納された操作1214の一部として格納され、それらが受信および更新されるときにデータの新しい行に適用される。例えば、「曜日」データフィールドのデータ値1が「月曜日」に置き換えられた場合、この同じ変換が、曜日として「1」を有する受信された全ての新しいデータ行に適用される。 All of these changes are stored as part of stored operation 1214 and applied to new rows of data as they are received and updated. For example, if the data value 1 in the "Day of the Week" data field is replaced with "Monday", this same transformation is applied to all new data rows received that have "1" as the day of the week.

開示された実装形態には、次の利点がある。
●利用可能な場合、ユーザの増分的結果を表示する。
●ユーザは、スクロール、選択、ブラッシングなどを通じて、到着したデータを探索することができる。
●アクションが到着するデータに影響を与える場合でも、ユーザがデータの到着時にフローに基づいたアクションを実行することができるようになる。
The disclosed implementation has the following advantages.
● Display the user's incremental results when available.
• Users can explore incoming data through scrolling, selection, brushing, and so on.
● It allows users to perform flow-based actions when data arrives, even if the action affects the data as it arrives.

データが到着すると、プロファイルおよびデータペインは定期的に更新され、新しいデータが反映される。 As data arrives, the profile and data panes are updated periodically to reflect new data.

データの読み込み中、ユーザは、データを操作してデータを表示および変更することができる。例えば、ユーザは次のことが可能となる。
●プロファイルペインを垂直方向および水平方向の両方にパンする。これを行うと、ビュー内プロファイルが読み込まれ、キャッシュの現在の状態が表示される。
●データペインを垂直方向および水平方向の両方にパンする。これにより、キャッシュの現在のビューが表示される。
●データが完全に読み込まれたかのように、プロファイルペインで選択を実行する。これらの選択はフィルタを意味する。フィルタは、追加のデータ/ドメインに対してすでに堅牢である必要がある。これらのフィルタは、ユーザインタラクションを促進するために適用および使用される。注:これらの選択は典型的に、位置ではなく、選択された値に基づいている。例えば、ユーザがフィールド「foo」で1~5の範囲を示すビン(バケットとも称される)を選択するとする。これは、fooのフィルタが[1,5]の範囲にあることを意味する。これにより、プロファイルペインでブラッシングが発生し、データペインでフィルタ処理が発生する。このフィルタは、より多くのデータが到着しても保持される。選択したビンがより大きなビンに統合されている場合、このビンには、選択した範囲が含まれていても、部分的にブラッシングが行われる。
●他の全てのビューステートオプション(並べ替えなど)は機能し続け、増分ロードをブロックしない。
●全てのノードのビューがライブに保たれる。例えば、結合ノードの結合サマリ領域では、データの読み込み中にユーザが結合パーツを選択することができる。
While the data is loading, the user can manipulate the data to view and change the data. For example, users can:
● Pan the profile pane both vertically and horizontally. Doing this loads the in-view profile and displays the current state of the cache.
● Pan the data pane both vertically and horizontally. This will give you the current view of the cache.
● Perform selections in the profile pane as if the data were fully loaded. These selections represent filters. Filters should already be robust to additional data/domains. These filters are applied and used to facilitate user interaction. Note: These selections are typically based on the value selected, not position. For example, suppose the user selects bins (also called buckets) in the field "foo" that range from 1 to 5. This means that the filter for foo is in the range [1,5]. This causes brushing in the profile pane and filtering in the data pane. This filter persists as more data arrives. If the selected bin is merged into a larger bin, this bin will be partially brushed even if it contains the selected range.
● All other viewstate options (such as sorting) continue to work and do not block incremental loading.
● The view of all nodes is kept live. For example, the join summary area of a join node allows the user to select join parts during data loading.

データが到着すると、ユーザはデータを編集することができる。
●列内の特定のデータに依存しない編集を行うことができる。例えば、列を削除もしくは追加し、列の名前を変更し、または列の型を変更することができる。
●列内の特定のデータに応じて編集することができる。例えば、プロファイルペインでビンを右クリック/削除することができる。これらの操作には、暗黙の選択範囲があり、範囲は、選択されたアイテムがより広い範囲に統合されている場合でも、最初の選択時に推測される。
●結合および集計などの操作の構成を行うことができる。
Once the data arrives, the user can edit the data.
● You can make edits independent of the specific data in the column. For example, columns can be removed or added, columns renamed, or column types changed.
● Can be edited according to the specific data in the column. For example, you can right click/delete a bin in the profile pane. These operations have an implicit selection range, and the range is inferred on the first selection even if the selected item is merged into a larger range.
● You can configure operations such as joins and aggregations.

データの読み込みに加えて複数のアクションを連鎖させることで、ここで概説した動作が維持される。例えば、
1.ユーザがSQLサーバーからテーブルTを読み込む。
2.メタデータが読み込まれた後、読み込みが完了する前に、ユーザは列cを削除する。
3.システムはTの読み込みを続行し、T-{c}の計算も開始する。ユーザは、このノードのメタデータが表示されるのを確認し、アクション(例えば、列dを削除)を実行することができる。
4.システムは、Tの読み込みを続行するが、T-{c}の計算を中止し、代わりにTからT-{c,d}を直接計算することを決定する。代替的に、システムは、Tの読み込みを継続してT-{c}を計算し、その上でT-{c,d}を計算することを決定する。
5.ユーザは、T-{c,d}が利用可能になったときに、その状態を引き続き変更することができる。
Chaining multiple actions in addition to reading data preserves the behavior outlined here. for example,
1. User reads table T from SQL server.
2. After the metadata is loaded, but before the loading is complete, the user deletes column c.
3. The system continues reading T and also begins calculating T-{c}. The user can see the metadata for this node displayed and perform an action (eg delete column d).
4. The system continues reading T, but decides to stop computing T-{c} and instead compute T-{c,d} from T directly. Alternatively, the system decides to continue reading T to compute T-{c} and then compute T-{c,d}.
5. The user can continue to change its state when T-{c,d} becomes available.

部分的な結果のみが読み込まれた状態でデータを変更するユーザアクションに加えて、ユーザは、より多くのデータが到着したときに保持されるユーザインターフェースにおいて他のアクションを実行することができる。例えば、ビューステートを選択、スクロール、または変更するためのユーザアクションは保持される。垂直スクロールおよび水平スクロールは、プロファイルペインおよびデータペインの両方に適用される。ユーザがいずれかのペインで特定のオブジェクトを選択した場合、新しいデータが到着してもその選択は保持される。ブラッシングおよびフィルタなど、ビューの状態が維持される。 In addition to user actions that change data with only partial results loaded, the user can perform other actions in the user interface that are retained when more data arrives. For example, user actions to select, scroll, or change viewstate are preserved. Vertical scrolling and horizontal scrolling apply to both the profile pane and the data pane. If the user selects a particular object in either pane, that selection is retained as new data arrives. View state is maintained, such as brushing and filtering.

本明細書で本発明の説明に使用される専門用語は、特定の実装形態を説明することのみを目的としており、本発明を限定することを意図するものではない。本発明の説明および添付の特許請求の範囲で使用される場合、単数形「a」、「an」、および「the」は、特に文脈が明示しない限り、複数形も含むことが意図される。本明細書で使用される「および/または」という用語は、1つ以上の関連するリストされたアイテムのありとあらゆる可能な組み合わせを指し、それらを包含することも理解されよう。本明細書で使用される場合、「含む」および/または「含んでいる」という用語は、述べられた特徴、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つ以上の他の特徴、ステップ、動作、要素、構成要素、および/またはそれらの群の存在または追加を排除しないことがさらに理解されよう。 The terminology used in the description of the invention herein is for the purpose of describing particular implementations only and is not intended to be limiting of the invention. As used in the description of the present invention and in the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term "and/or" as used herein refers to and includes any and all possible combinations of one or more of the associated listed items. As used herein, the terms “comprise” and/or “comprising” specify the presence of the stated features, steps, acts, elements and/or components, but one or more It will further be understood that does not exclude the presence or addition of other features, steps, acts, elements, components, and/or groups thereof.

前述の記載は、説明の目的で、特定の実装形態を参照して記載されてきた。しかしながら、上記の例示的な論議は、網羅的であること、または本発明を開示された正確な形態に限定することを意図していない。上記の教示を考慮して、多くの修正および変形が可能である。実装形態は、本発明の原理およびその実際の応用を最もよく解説するために選択および記載され、それにより、当業者は、本発明および企図される特定の用途に好適な様々な修正を伴う様々な実装形態を最大限に利用することができる。 The foregoing description, for purposes of explanation, has been described with reference to specific implementations. However, the illustrative discussion above is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in light of the above teaching. The implementations were chosen and described in order to best explain the principles of the invention and its practical application, thereby allowing those skilled in the art to make various modifications suitable for the invention and the particular uses contemplated. implementation can be maximized.

Claims (20)

後続の分析のためにデータを準備するためのコンピュータシステムであって、
1つ以上のプロセッサと、
メモリと、
前記メモリに格納され、前記1つ以上のプロセッサによって実行されるように構成された1つ以上のプログラムと、を含み、前記1つ以上のプログラムが、
データフローペイン、プロファイルペイン、およびデータペインを含むユーザインターフェースを表示することであって、前記データフローペインが、データソースを識別するノード/リンクフローダイアグラムを表示する、表示することと、
前記データソースに対する複数のクエリの各々について、
行数を指定する初期ブロックサイズを用いて、前記データソースに対して非同期で前記それぞれのクエリを発行すること、
前記それぞれのクエリを満たす前記データソースからそれぞれの行の初期セットを取得すると、前記クエリを満たす全ての前記行が取得されるまで、更新されたブロックサイズで前記それぞれのクエリを非同期的に繰り返すこと、および
前記それぞれのクエリを満たす取得された行をローカルキャッシュに格納することと、
定期的に、
全ての前記クエリで前記ローカルキャッシュに取得および保存された前記データソースの行を識別する一意の識別子を決定すること、および
前記一意の識別子が変更された場合、前記プロファイルペインを更新して、前記データソース内の複数のデータフィールドのデータ値ヒストグラムを表示することであって、各データ値ヒストグラムの各バーが、(i)前記一意の識別子によって指定され、(ii)それぞれのデータフィールドに対して単一の特定のデータ値またはデータ値の範囲を有する前記データソースの行数を示す、表示することと、
これにより、複数の独立したクエリが非同期で実行されている間、前記プロファイルペインにデータの一貫したビューを提供することと、を行うための命令を含む、コンピュータシステム。
A computer system for preparing data for subsequent analysis, comprising:
one or more processors;
memory;
one or more programs stored in the memory and configured to be executed by the one or more processors, the one or more programs comprising:
displaying a user interface including a dataflow pane, a profile pane, and a datapane, the dataflow pane displaying a node/link flow diagram identifying data sources;
For each of a plurality of queries against said data source,
issuing each of the queries asynchronously against the data source with an initial block size that specifies the number of rows;
Upon retrieving an initial set of respective rows from the data source satisfying the respective query, asynchronously repeating the respective query with an updated block size until all the rows satisfying the query are retrieved. , and storing retrieved rows satisfying each of said queries in a local cache;
regularly,
determining a unique identifier that identifies rows of the data source retrieved and stored in the local cache for all of the queries; and updating the profile pane if the unique identifier has changed to: displaying data value histograms of a plurality of data fields in a data source, wherein each bar of each data value histogram is (i) designated by the unique identifier; and (ii) for a respective data field. indicating the number of rows of the data source that have a single specific data value or range of data values;
thereby providing a consistent view of data in the profile pane while multiple independent queries are being executed asynchronously; and
前記データソースに対するそれぞれのクエリの各繰り返しが、前記それぞれのクエリの過去のブロックサイズよりも大きいブロックサイズを指定する、請求項1に記載のコンピュータシステム。 2. The computer system of claim 1, wherein each iteration of each query against the data source specifies a block size that is larger than the previous block size of the respective query. 前記データソースに対するそれぞれのクエリの各繰り返しが、前記それぞれのクエリの過去のブロックサイズの2倍のサイズであるブロックサイズを指定する、請求項2に記載のコンピュータシステム。 3. The computer system of claim 2, wherein each iteration of each query against the data source specifies a block size that is twice the size of the previous block size of the respective query. 前記一意の識別子の前記定期的な決定は、それが1秒に1回以下発生するように調整される、請求項1に記載のコンピュータシステム。 2. The computer system of claim 1, wherein said periodic determination of said unique identifier is coordinated so that it occurs no more than once per second. 前記一意の識別子が変更された場合、前記一意の識別子に従って前記データペインに表示された前記データソースからデータの行を更新することをさらに含む、請求項1に記載のコンピュータシステム。 2. The computer system of claim 1, further comprising updating rows of data from the data source displayed in the data pane according to the unique identifier if the unique identifier has changed. 前記フローダイアグラムの第1のノードが最初に選択され、前記プロファイルペインに表示される前記データ値ヒストグラムが、前記第1のノードの計算されたデータセットに対応する、請求項1に記載のコンピュータシステム。 2. The computer system of claim 1, wherein a first node of said flow diagram is first selected and said data value histogram displayed in said profile pane corresponds to a calculated data set of said first node. . 前記非同期クエリの実行中に、前記フローダイアグラムの第2のノードのユーザ選択を受信することと、
前記ユーザ選択に応じて、前記プロファイルペインを更新して、前記第2のノードの結果セットからの複数のデータフィールドの新しいデータ値ヒストグラムを表示することであって、各データ値ヒストグラムの各バーが、それぞれのデータフィールドに対して単一の特定のデータ値またはデータ値の範囲を有する前記結果セットの行数を示す、表示することと、をさらに含む、請求項6に記載のコンピュータシステム。
receiving a user selection of a second node of the flow diagram during execution of the asynchronous query;
Updating the profile pane to display new data value histograms for a plurality of data fields from the second node result set in response to the user selection, wherein each bar of each data value histogram is 7. The computer system of claim 6, further comprising: displaying the number of rows of the result set that have a single specific data value or range of data values for each data field.
前記一意の識別子が、前記データソースの主キーフィールドの主キー値であり、前記データソースの行が、前記行に対応するキー値が前記主キー値よりも小さい場合に、前記一意の識別子によって指定される、請求項1に記載のコンピュータシステム。 The unique identifier is a primary key value of a primary key field of the data source, and a row of the data source is identified by the unique identifier if the key value corresponding to the row is less than the primary key value. 2. The computer system of claim 1, specified. 前記一意の識別子が、高水準の行番号であり、前記データソースの行が、前記行に対応する行番号が前記高水準の行番号以下である場合に、前記一意の識別子によって指定される、請求項1に記載のコンピュータシステム。 the unique identifier is a high-level row number, and a row of the data source is designated by the unique identifier if the row number corresponding to the row is less than or equal to the high-level row number; 2. The computer system of claim 1. 前記クエリの各々が、同じソート順序を有する、請求項9に記載のコンピュータシステム。 10. The computer system of claim 9, wherein each of said queries has the same sort order. 前記非同期クエリのうちの1つ以上が実行されている間、
ユーザ入力を受信して、前記プロファイルペインに表示されるデータを変更することと、
前記ユーザ入力に応答して、前記ユーザ入力を前記データソースから前記取得した行に適用される操作に変換し、前記操作の定義を保存することと、をさらに含み、
前記一意の識別子が変更された場合、前記プロファイルペインを更新することが、前記クエリによって取得された行に前記定義された操作を適用することを含む、請求項1に記載のコンピュータシステム。
while one or more of said asynchronous queries are being executed;
receiving user input to modify data displayed in the profile pane;
responsive to the user input, converting the user input into an operation to be applied to the retrieved rows from the data source and saving a definition of the operation;
2. The computer system of claim 1, wherein updating the profile pane comprises applying the defined operation to rows retrieved by the query if the unique identifier has changed.
前記ユーザ入力が、最初のデータフィールドの最初のデータ値ビンに対応するデータ値ヒストグラムの単一のバーの選択であり、これにより、前記プロファイルペインに表示された前記データを、前記最初のフィールドのデータ値が前記最初のデータ値ビンに対応する前記データソースの行にフィルタ処理し、
前記保存された操作により、前記プロファイルペインに表示された前記データが、前記最初のフィールドのデータ値が前記最初のデータ値ビンに対応する前記データソースの行にフィルタ処理するフィルタに適用される、請求項11に記載のコンピュータシステム。
The user input is the selection of a single bar of a data value histogram corresponding to the first data value bin of the first data field, thereby converting the data displayed in the profile pane to the first data value bin of the first field. filtering to rows of the data source whose data values correspond to the first data value bin;
the saved operation causes the data displayed in the profile pane to be applied to a filter that filters to rows of the data source where the data value of the first field corresponds to the first data value bin; 12. The computer system of claim 11.
前記ユーザ入力により、最初のデータフィールドに対応するデータ値ヒストグラムが前記プロファイルペインから削除され、
前記一意の識別子が変更された場合に前記プロファイルペインを更新することが、前記データペインから前記最初のデータフィールドを省略することを含む、請求項11に記載のコンピュータシステム。
the user input causes the data value histogram corresponding to the first data field to be removed from the profile pane;
12. The computer system of claim 11, wherein updating the profile pane when the unique identifier has changed comprises omitting the first data field from the data pane.
前記ユーザ入力により、前記クエリによって取得された1つ以上の他の列の関数として計算された、対応するデータ値ヒストグラムを備えた計算列が前記プロファイルペインに追加され、
前記一意の識別子が変更された場合に前記プロファイルペインを更新することが、前記関数および前記データソースから取得された前記追加の行に従って前記計算列の前記データ値ヒストグラムを更新することを含む、請求項11に記載のコンピュータシステム。
the user input adds a computed column to the profile pane with a corresponding data value histogram computed as a function of one or more other columns retrieved by the query;
wherein updating the profile pane when the unique identifier changes comprises updating the data value histogram for the computed column according to the additional rows obtained from the function and the data source. Item 12. The computer system according to Item 11.
前記ユーザ入力により、前記プロファイルペインの最初のデータ列の名前が新しい名前に変更され、
前記一意の識別子が変更された場合に前記プロファイルペインを更新することが、前記最初のデータ列の前記新しい名前を保持することを含む、請求項11に記載のコンピュータシステム。
the user input renames the first data column of the profile pane to a new name;
12. The computer system of claim 11, wherein updating the profile pane when the unique identifier has changed comprises retaining the new name of the original data column.
前記ユーザ入力により、変換関数に従って、前記プロファイルペインの最初のデータ列のデータ型が新しいデータ型に変換され、
前記一意の識別子が変更された場合に前記プロファイルペインを更新することが、前記データソースから取得した前記追加の行の前記最初のデータ列に前記変換関数を適用することを含む、請求項11に記載のコンピュータシステム。
the user input causes the data type of the first data column of the profile pane to be converted to a new data type according to a conversion function;
12. The method of claim 11, wherein updating the profile pane when the unique identifier changes comprises applying the transform function to the first data column of the additional rows obtained from the data source. The described computer system.
前記ユーザ入力により、前記プロファイルペインの最初のデータ列のビンに対応するヒストグラムバーが削除され、
前記一意の識別子が変更された場合に前記プロファイルペインを更新することは、前記行が前記ビンに一致する前記最初のデータ列のデータ値を有する場合、取得した前記追加の行のいずれかを削除することを含む、請求項11に記載のコンピュータシステム。
the user input removes the histogram bar corresponding to the first data column bin in the profile pane;
Updating the profile pane if the unique identifier has changed removes any of the additional rows obtained if the row has a data value in the first data column that matches the bin. 12. The computer system of claim 11, comprising:
前記ビンが、個々のデータ値またはデータ値の連続範囲に対応する、請求項17に記載のコンピュータシステム。 18. The computer system of claim 17, wherein the bins correspond to individual data values or continuous ranges of data values. 1つ以上のプロセッサ、メモリ、およびディスプレイを有するコンピュータシステムによって実行するように構成された1つ以上のプログラムを格納する非一時的コンピュータ可読記憶媒体であって、前記1つ以上のプログラムが、
データフローペイン、プロファイルペイン、およびデータペインを含むユーザインターフェースを表示することであって、前記データフローペインが、データソースを識別するノード/リンクフローダイアグラムを表示する、表示することと、
前記データソースに対する複数のクエリの各々について、
行数を指定する初期ブロックサイズを用いて、前記データソースに対して非同期で前記それぞれのクエリを発行すること、
前記それぞれのクエリを満たす前記データソースからそれぞれの行の初期セットを取得すると、前記クエリを満たす全ての前記行が取得されるまで、更新されたブロックサイズで前記それぞれのクエリを非同期的に繰り返すこと、および
前記それぞれのクエリを満たす取得された行をローカルキャッシュに格納することと、
定期的に、
全ての前記クエリで前記ローカルキャッシュに取得および保存された前記データソースの行を識別する一意の識別子を決定すること、および
前記一意の識別子が変更された場合、前記プロファイルペインを更新して、前記データソース内の複数のデータフィールドのデータ値ヒストグラムを表示することであって、各データ値ヒストグラムの各バーが、(i)前記一意の識別子によって指定され、(ii)それぞれのデータフィールドに対して単一の特定のデータ値またはデータ値の範囲を有する前記データソースの行数を示す、表示することと、
これにより、複数の独立したクエリが非同期で実行されている間、前記プロファイルペインにデータの一貫したビューを提供することと、を行うための命令を含む、非一時的コンピュータ可読記憶媒体。
A non-transitory computer-readable storage medium storing one or more programs configured to be executed by a computer system having one or more processors, memory, and a display, the one or more programs comprising:
displaying a user interface including a dataflow pane, a profile pane, and a datapane, the dataflow pane displaying a node/link flow diagram identifying data sources;
For each of a plurality of queries against said data source,
issuing each of the queries asynchronously against the data source with an initial block size that specifies the number of rows;
Upon retrieving an initial set of respective rows from the data source satisfying the respective query, asynchronously repeating the respective query with an updated block size until all the rows satisfying the query are retrieved. , and storing retrieved rows satisfying each of said queries in a local cache;
regularly,
determining a unique identifier that identifies rows of the data source retrieved and stored in the local cache for all of the queries; and updating the profile pane if the unique identifier has changed to: displaying data value histograms of a plurality of data fields in a data source, wherein each bar of each data value histogram is (i) designated by the unique identifier; and (ii) for a respective data field. indicating the number of rows of the data source that have a single specific data value or range of data values;
providing a consistent view of data in said profile pane while multiple independent queries are being executed asynchronously; and
後続の分析のためにデータを準備する方法であって、
ディスプレイ、1つ以上のプロセッサ、および前記1つ以上のプロセッサによって実行されるように構成された1つ以上のプログラムを格納するメモリを有するコンピュータシステムにおいて、
データフローペイン、プロファイルペイン、およびデータペインを含むユーザインターフェースを表示することであって、前記データフローペインが、データソースを識別するノード/リンクフローダイアグラムを表示する、表示することと、
前記データソースに対する複数のクエリの各々について、
行数を指定する初期ブロックサイズを用いて、前記データソースに対して非同期で前記それぞれのクエリを発行すること、
前記それぞれのクエリを満たす前記データソースからそれぞれの行の初期セットを取得すると、前記クエリを満たす全ての前記行が取得されるまで、更新されたブロックサイズで前記それぞれのクエリを非同期的に繰り返すこと、および
前記それぞれのクエリを満たす取得された行をローカルキャッシュに格納することと、
定期的に、
全ての前記クエリで前記ローカルキャッシュに取得および保存された前記データソースの行を識別する一意の識別子を決定すること、および
前記一意の識別子が変更された場合、前記プロファイルペインを更新して、前記データソース内の複数のデータフィールドのデータ値ヒストグラムを表示することであって、各データ値ヒストグラムの各バーが、(i)前記一意の識別子によって指定され、(ii)それぞれのデータフィールドに対して単一の特定のデータ値またはデータ値の範囲を有する前記データソースの行数を示す、表示することと、
これにより、複数の独立したクエリが非同期で実行されている間、前記プロファイルペインにデータの一貫したビューを提供することと、を含む、方法。
A method of preparing data for subsequent analysis, comprising:
In a computer system having a display, one or more processors, and a memory storing one or more programs configured to be executed by the one or more processors,
displaying a user interface including a dataflow pane, a profile pane, and a datapane, the dataflow pane displaying a node/link flow diagram identifying data sources;
For each of a plurality of queries against said data source,
issuing each of the queries asynchronously against the data source with an initial block size that specifies the number of rows;
Upon retrieving an initial set of respective rows from the data source satisfying the respective query, asynchronously repeating the respective query with an updated block size until all the rows satisfying the query are retrieved. , and storing retrieved rows satisfying each of said queries in a local cache;
regularly,
determining a unique identifier that identifies rows of the data source retrieved and stored in the local cache for all of the queries; and updating the profile pane if the unique identifier has changed to: displaying data value histograms of a plurality of data fields in a data source, wherein each bar of each data value histogram is (i) designated by the unique identifier; and (ii) for a respective data field. indicating the number of rows of the data source that have a single specific data value or range of data values;
thereby providing a consistent view of data in the profile pane while multiple independent queries are being executed asynchronously.
JP2022203797A 2018-10-09 2022-12-20 Correlated incremental loading of multiple datasets for interactive data prep applications Active JP7304480B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/155,818 2018-10-09
US16/155,818 US10885057B2 (en) 2016-11-07 2018-10-09 Correlated incremental loading of multiple data sets for an interactive data prep application
JP2021518509A JP7199522B2 (en) 2018-10-09 2019-10-01 Correlated incremental loading of multiple datasets for interactive data prep applications
PCT/US2019/053935 WO2020076546A1 (en) 2018-10-09 2019-10-01 Correlated incremental loading of multiple data sets for an interactive data prep application

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2021518509A Division JP7199522B2 (en) 2018-10-09 2019-10-01 Correlated incremental loading of multiple datasets for interactive data prep applications

Publications (2)

Publication Number Publication Date
JP2023040041A true JP2023040041A (en) 2023-03-22
JP7304480B2 JP7304480B2 (en) 2023-07-06

Family

ID=68318939

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021518509A Active JP7199522B2 (en) 2018-10-09 2019-10-01 Correlated incremental loading of multiple datasets for interactive data prep applications
JP2022203797A Active JP7304480B2 (en) 2018-10-09 2022-12-20 Correlated incremental loading of multiple datasets for interactive data prep applications

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2021518509A Active JP7199522B2 (en) 2018-10-09 2019-10-01 Correlated incremental loading of multiple datasets for interactive data prep applications

Country Status (7)

Country Link
EP (1) EP3864521A1 (en)
JP (2) JP7199522B2 (en)
CN (1) CN113168413B (en)
AU (2) AU2019356745B2 (en)
BR (1) BR112021006722A2 (en)
CA (1) CA3115220C (en)
WO (1) WO2020076546A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI772233B (en) * 2021-11-29 2022-07-21 大陸商常州欣盛半導體技術股份有限公司 Automatic integration method of cof test data
US20240070147A1 (en) * 2022-08-26 2024-02-29 Oracle International Corporation Dynamic Inclusion of Metadata Configurations into a Logical Model
CN117056359B (en) * 2023-10-09 2024-01-09 宁波银行股份有限公司 Table reconstruction method and device, electronic equipment and storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887433A (en) * 1994-09-20 1996-04-02 Matsushita Electric Ind Co Ltd Block management system of file system
JP2011138382A (en) * 2009-12-28 2011-07-14 Sharp Corp Apparatus and method for processing image, program and recording medium
US20180129374A1 (en) * 2016-11-07 2018-05-10 Tableau Software, Inc. Generating and Applying Data Transformations in a Data Import Engine

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030220928A1 (en) * 2002-05-21 2003-11-27 Patrick Durand Method for organizing and querying a genomic and proteomic databases
US8069188B2 (en) * 2007-05-07 2011-11-29 Applied Technical Systems, Inc. Database system storing a data structure that includes data nodes connected by context nodes and related method
CN101626313A (en) * 2009-08-10 2010-01-13 中兴通讯股份有限公司 Network management system client and performance data display method thereof
CN101916254B (en) * 2010-06-29 2016-07-06 用友软件股份有限公司 Form statistical method and device
US9501540B2 (en) * 2011-11-04 2016-11-22 BigML, Inc. Interactive visualization of big data sets and models including textual data
US20140046923A1 (en) * 2012-08-10 2014-02-13 Microsoft Corporation Generating queries based upon data points in a spreadsheet application
CN104750727B (en) * 2013-12-30 2019-03-26 沈阳亿阳计算机技术有限责任公司 A kind of column memory storage inquiry unit and column memory storage querying method
CN105512139B (en) * 2014-09-26 2019-11-05 阿里巴巴集团控股有限公司 The implementation method and device of data visualization
US10409802B2 (en) * 2015-06-12 2019-09-10 Ab Initio Technology Llc Data quality analysis
US10558681B2 (en) * 2016-01-26 2020-02-11 Socrata, Inc. Automated computer visualization and interaction with big data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887433A (en) * 1994-09-20 1996-04-02 Matsushita Electric Ind Co Ltd Block management system of file system
JP2011138382A (en) * 2009-12-28 2011-07-14 Sharp Corp Apparatus and method for processing image, program and recording medium
US20180129374A1 (en) * 2016-11-07 2018-05-10 Tableau Software, Inc. Generating and Applying Data Transformations in a Data Import Engine

Also Published As

Publication number Publication date
AU2019356745B2 (en) 2022-01-13
AU2019356745A1 (en) 2021-05-13
JP7304480B2 (en) 2023-07-06
EP3864521A1 (en) 2021-08-18
AU2022202376B2 (en) 2022-06-09
JP2022504205A (en) 2022-01-13
CA3115220C (en) 2023-07-18
CN113168413A (en) 2021-07-23
CN113168413B (en) 2022-07-01
BR112021006722A2 (en) 2021-07-27
AU2022202376A1 (en) 2022-05-05
WO2020076546A1 (en) 2020-04-16
CA3115220A1 (en) 2020-04-16
JP7199522B2 (en) 2023-01-05

Similar Documents

Publication Publication Date Title
JP7166483B1 (en) User interface to prepare and curate data for subsequent analysis
US10719528B2 (en) Data preparation with shared data flows
US11188556B2 (en) Correlated incremental loading of multiple data sets for an interactive data prep application
US10394691B1 (en) Resolution of data flow errors using the lineage of detected error conditions
JP7304480B2 (en) Correlated incremental loading of multiple datasets for interactive data prep applications

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230118

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230118

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230529

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230626

R150 Certificate of patent or registration of utility model

Ref document number: 7304480

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150