ExcelDAX-データモデルのデータの更新
DAXは、Excel PowerPivotのデータモデルのデータの計算に使用されます。DAXを使用すると、データのモデリングとレポートのアクティビティを効果的に処理できます。ただし、これには、現在のデータを反映するために、データモデルのデータを随時更新する必要があります。
データ接続を確立することにより、外部データソースからワークブックのデータモデルにデータをインポートできます。いつでもソースからデータを更新できます。このオプションは、ライブ販売情報または1日に数回更新されるデータフィードを含むリレーショナルデータベースからデータを取得する場合に便利です。
データモデルのデータを更新するさまざまな方法
データモデルのデータは、次の方法で更新できます-
- データモデルのデータを随時更新します。
- 接続プロパティなどのデータソースに変更を加える。
- ソースデータが変更された後、データモデルのデータを更新します。
- データをフィルタリングして、データソースのテーブルから行を選択的にロードします。
データモデルのデータを更新する
既存のソースから更新されたデータを取得することに加えて、ソースデータのスキーマに変更を加えるたびに、ブック内のデータを更新する必要があります。これらの変更には、列またはテーブルの追加、またはインポートされる行の変更が含まれる場合があります。
データの追加、データの変更、またはフィルターの編集は、常にそのデータソースに依存するDAX式の再計算をトリガーすることに注意してください。詳細については、「DAX式の再計算」の章を参照してください。
データモデルには2種類のデータ更新があります-
手動更新
手動更新オプションを選択した場合、データモデルのデータをいつでも手動で更新できます。デフォルトであるすべてのデータを更新することも、個々のデータソースに対して更新するテーブルと列を手動で選択することもできます。
自動またはスケジュールされた更新
ブックをPowerPivotをサポートするPowerPivotギャラリーまたはSharePointサイトに公開している場合、ユーザーまたはSharePoint管理者は、ブック内のデータを自動的に更新するためのスケジュールを作成できます。このような場合、サーバー上で無人データの更新をスケジュールできます。
既存のデータソースを手動で更新する
既存のデータソースからデータを更新する必要がある場合、または新しいDAX数式を設計するために最新のデータを取得する必要がある場合は、いつでも手動でデータを更新できます。単一のテーブル、同じデータ接続を共有するすべてのテーブル、またはデータモデル内のすべてのテーブルを更新できます。
SQL ServerやOracleなどのリレーショナルデータソースからデータをインポートした場合は、1回の操作ですべての関連テーブルを更新できます。新しいデータまたは更新されたデータをデータモデルにロードする操作は、多くの場合、DAX式の再計算をトリガーしますが、どちらも完了するまでに時間がかかる場合があります。したがって、データソースを変更したり、データソースから取得したデータを更新したりする前に、潜在的な影響に注意する必要があります。
データモデル内の単一のテーブルまたはすべてのテーブルのデータを更新するには、次の手順を実行します。
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- [更新]をクリックします。
- ドロップダウンリストで[更新]をクリックして、選択したテーブルを更新します。
- すべてのテーブルを更新するには、ドロップダウンリストで[すべて更新]をクリックします。
データモデルで同じ接続を使用するすべてのテーブルのデータを更新するには、次の手順を実行します。
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- [外部データの取得]グループの[既存の接続]をクリックします。
[既存の接続]ダイアログボックスが表示されます。
- 接続を選択します。
- [更新]ボタンをクリックします。
PowerPivotエンジンが選択したテーブルまたはデータソースのすべてのテーブルからデータを再読み込みすると、[データの更新]ダイアログボックスが表示され、データの更新の進行状況情報が表示されます。
3つの可能な結果があります-
Success −各テーブルにインポートされた行数をレポートします。
Error−データベースがオフラインで、権限がなくなった場合、エラーが発生する可能性があります。ソースでテーブルまたは列が削除されるか、名前が変更されます。
Cancelled −これは、おそらく接続で更新が無効になっているために、Excelが更新要求を発行しなかったことを意味します。
[閉じる]ボタンをクリックします。
データソースの変更
データモデルのデータを変更するには、接続情報を編集するか、PowerPivotウィンドウでデータモデルで使用されるテーブルと列の定義を更新します。
既存のデータソースに次の変更を加えることができます-
接続
- データベース名またはサーバー名を編集します。
- ソーステキストファイル、スプレッドシート、またはデータフィードの名前を変更します。
- データソースの場所を変更します。
- リレーショナルデータソースの場合は、デフォルトのカタログまたは初期カタログを変更します。
- データへのアクセスに使用する認証方法または資格情報を変更します。
- データソースの詳細プロパティを編集します。
テーブル
- データにフィルターを追加または削除します。
- フィルタ条件を変更します。
- テーブルを追加または削除します。
- テーブル名を変更します。
- データソースのテーブルとデータモデルのテーブルの間のマッピングを編集します。
- データソースから別の列を選択します。
列
- 列名を変更します。
- 新しい列を追加します。
- データモデルから列を削除します(データソースには影響しません)。
次の方法で既存のデータソースのプロパティを編集できます-
ソースとして使用されるファイル、フィード、データベース、そのプロパティ、その他のプロバイダー固有の接続オプションなど、接続情報を変更できます。
テーブルと列のマッピングを変更し、使用されなくなった列への参照を削除できます。
外部データソースから取得するテーブル、ビュー、または列を変更できます。
既存のデータソースへの接続の変更
現在の接続で使用されている外部データソースを変更することにより、作成した外部データソースへの接続を変更できます。ただし、従う手順はデータソースの種類によって異なります。
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- [外部データの取得]グループの[既存の接続]をクリックします。
[既存の接続]ダイアログボックスが表示されます。変更する接続を選択します。
変更するデータソースの種類に応じて、プロバイダーが異なる場合があります。また、利用可能なプロパティの変更が必要になる場合があります。データを含むExcelブックへの接続の簡単な例を考えてみましょう。
[編集]ボタンをクリックします。[接続の編集]ダイアログボックスが表示されます。
[参照]ボタンをクリックして、同じタイプ(この例ではExcelブック)の名前または場所が異なる別のデータベースを見つけます。
[開く]ボタンをクリックします。
新しいファイルが選択されます。接続情報を変更したため、接続を確認するためにテーブルを保存および更新する必要があることを示すメッセージが表示されます。
[保存]ボタンをクリックします。[既存の接続]ダイアログボックスに戻ります。
[更新]ボタンをクリックします。データ更新ダイアログボックスが表示され、データ更新の進行状況が示されます。データ更新のステータスが表示されます。セクションを参照してください-Manually Refreshing an Existing Data Source 詳細については。
データの更新が成功したら、[閉じる]をクリックします。
[既存の接続]ダイアログボックスで[閉じる]をクリックします。
テーブルと列のマッピング(バインディング)の編集
データソースが変更されたときに列マッピングを編集するには、次のようにします。
Power Pivotウィンドウで、変更するテーブルが含まれているタブをクリックします。
リボンの[デザイン]タブをクリックします。
テーブルのプロパティをクリックします。
[テーブルプロパティの編集]ダイアログボックスが表示されます。
あなたは以下を観察することができます-
データモデルで選択したテーブルの名前が[テーブル名]ボックスに表示されます。
外部データソース内の対応するテーブルの名前が[ソース名]ボックスに表示されます。
列名には、ソースとモーダルの2つのオプションがあります。
データソースとデータモデルで列の名前が異なる場合は、これらのオプションを選択して、2つの列名のセットを切り替えることができます。
選択したテーブルのプレビューがダイアログボックスに表示されます。
以下を編集できます−
データソースとして使用されるテーブルを変更するには、[ソース名]ドロップダウンリストで選択したテーブルとは別のテーブルを選択します。
必要に応じて列マッピングを変更します-
ソースには存在するがデータモデルには存在しない列を追加するには、列名の横にあるチェックボックスを選択します。追加するすべての列について繰り返します。実際のデータは、次に更新するときにデータモデルに読み込まれます。
データモデルの一部の列が現在のデータソースで使用できなくなった場合、無効な列を一覧表示するメッセージが通知領域に表示されます。何もする必要はありません。
[保存]ボタンをクリックします。
現在のテーブルプロパティのセットを保存すると、メッセージが表示されます–しばらくお待ちください。次に、取得された行数が表示されます。
データモデルのテーブルでは、無効な列が自動的に削除され、新しい列が追加されます。
列名とデータ型の変更
データモデルのテーブルの列の名前は、次のように変更できます-
列のヘッダーをダブルクリックします。ヘッダーの列の名前が強調表示されます。
新しい列名を入力し、古い名前を上書きします。または、次のようにデータモデルのテーブルの列の名前を変更することもできます。
ヘッダーをクリックして列を選択します。
列を右クリックします。
ドロップダウンリストで[列の名前を変更]をクリックします。
ヘッダーの列の名前が強調表示されます。新しい列名を入力し、古い名前を上書きします。
学習したように、データモデルのテーブルの列のすべての値は同じデータ型である必要があります。
列のデータ型を変更するには、次のようにします。
ヘッダーをクリックして、変更する列を選択します。
リボンの[ホーム]タブをクリックします。
[書式設定]グループのコントロールをクリックして、列のデータ型と書式を変更します。
データソースへのフィルターの追加/変更
データをインポートするときにデータソースにフィルターを追加して、データモデルのテーブルの行数を制限できます。後で、前に定義したフィルターを変更することにより、データモデルのテーブルの行を追加したり、行数を減らしたりすることができます。
インポート中にデータソースにフィルターを追加する
データのインポート中にデータソースに新しいフィルターを追加するには、次の手順を実行します。
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- Get ExternalDataグループのデータソースの1つをクリックします。
[テーブルインポートウィザード]ダイアログボックスが表示されます。
- 手順に進みます–テーブルとビューを選択します。
- テーブルを選択し、[プレビューとフィルター]をクリックします。
[選択したテーブルのプレビュー]ダイアログボックスが表示されます。
- フィルタを適用する列をクリックします。
- 列見出しの右側にある下向き矢印をクリックします。
フィルタを追加するには、次のいずれかを実行します-
列の値のリストで、フィルタリングする1つ以上の値を選択またはクリアして、[OK]をクリックします。
ただし、値の数が極端に多い場合は、個々の項目がリストに表示されない場合があります。代わりに、「表示するアイテムが多すぎます」というメッセージが表示されます。
[数値フィルター]または[テキストフィルター]をクリックします(列のデータ型によって異なります)。
次に、比較演算子コマンド(Equalsなど)の1つをクリックするか、[カスタムフィルター]をクリックします。[カスタムフィルター]ダイアログボックスで、フィルターを作成し、[OK]をクリックします。
Note −いずれかの段階で間違いを犯した場合は、[行フィルターのクリア]ボタンをクリックして最初からやり直してください。
- [OK]をクリックします。テーブルインポートウィザードの[テーブルとビューの選択]ページに戻ります。
ご覧のとおり、[フィルターの詳細]列に、フィルターを定義した列の[適用されたフィルター]リンクが表示されます。
リンクをクリックすると、ウィザードによって作成されたフィルター式を表示できます。ただし、各フィルター式の構文はプロバイダーによって異なり、編集することはできません。
- [完了]をクリックして、フィルターが適用されたデータをインポートします。
- テーブルインポートウィザードを閉じます。
フィルタを既存のデータソースに変更する
データをインポートした後、行を追加するか、テーブル内の既存の行を制限することにより、データを随時更新する必要がある場合があります。このような場合、テーブルの既存のフィルターを変更したり、新しいフィルターを追加したりできます。
PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
[外部データの取得]グループの[既存の接続]をクリックします。[既存の接続]ダイアログボックスが表示されます。
フィルタを変更する必要があるテーブルを含む接続をクリックします。
[開く]ボタンをクリックします。
[テーブルインポートウィザード]ダイアログボックスが表示されます。前のセクションの手順を繰り返して、列をフィルタリングします。