C#でフィックスクエリデータを使用する
では、次回はクエリが制限された情報の場合のアプリケーションを作成します。フレキシブルクエリのデータを取得するために作成したプロジェクトをそのまま使います。
準備
今回はAlteryx, LLCから提供されている「Census Demographic Data」を使用します。このデータは人口統計などのデータで構成されてます。まずはサブスクリプションを購入してください。サブスクリプションを購入すると各情報のページに.NET Class Libraryのリンクが表示されるようになるので、「CensusDemographicDataContainer.cs」を任意の箇所にダウンロードしてください。このファイルが「Census Demographic Data」の情報を使用するためのライブラリファイルになります。

このダウンロードしたファイルをプロジェクトに追加します。プロジェクト名(今回はDataMarket)を右クリックしてメニューを表示して、[追加]→[既存の項目]でダイアログから選択して追加します。
コンテキストの作成
フレキシブルデータの場合と基本的に処理は変わりませんが、必須引数があり専用のライブラリを使用する点が異なります。まず「CensusDemographicDataContainer.cs」をプロジェクトのフォルダに配置した上で、Webロールのプロジェクトを右クリックしてプルダウンメニューを表示し[追加]→[既存の項目]でプロジェクトに追加します。次に「DataMarketContext.cs」にデータを操作するクラスを実装します。
[DataObject]
public class CensusDemographicDataContext
{
private string YOURLIVEID = "";
private string YOURACCOUNTKEY = "";
private Uri serviceUri;
private CensusDemographicDataContainer context;
public CensusDemographicDataContext()
{
serviceUri = new Uri("https://api.datamarket.azure.com/Data.ashx/Alteryx/CensusDemographicData/");
context = new CensusDemographicDataContainer(serviceUri);
context.Credentials = new NetworkCredential(
YOURLIVEID,
YOURACCOUNTKEY);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public IEnumerable<CensusDemographicDataEntity> GetCensusDemographicData(double longitude, double latitude)
{
return context.GetCensusDemographicData(longitude, latitude, null, null);
}
}
フォーム画面の作成
次に、データの入力・表示を行うフォーム画面(CensusDemographicData.aspx)を作成します。今回は最低限の必須項目であるLongitudeとLatitudeを元に検索を行うため、2つの入力項目の入力を行うテキストボックス、検索結果を表示するGridView、データバインドのためのObjectDataSource、検索を行うためのボタンを配置します。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CensusDemographicData.aspx.cs" Inherits="DataMarket.CensusDemographicData" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Census Demographic Dataのリスト</h1>
Longitude<asp:TextBox ID="LongitudeTextBox" runat="server"></asp:TextBox>
<br />
Latitude<asp:TextBox ID="latitudeTextBox" runat="server"></asp:TextBox>
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="検索" />
<br />
<br />
<asp:ObjectDataSource ID="CensusDemographicDataSource" runat="server"
OldValuesParameterFormatString="original_{0}"
SelectMethod="GetCensusDemographicData"
TypeName="DataMarket.CensusDemographicDataContext">
<SelectParameters>
<asp:ControlParameter ControlID="LongitudeTextBox" Name="longitude"
PropertyName="Text" Type="Double" DefaultValue="33.37321" />
<asp:ControlParameter ControlID="latitudeTextBox" Name="latitude"
PropertyName="Text" Type="Double" DefaultValue="-111.47521" />
</SelectParameters>
</asp:ObjectDataSource>
<br />
<asp:GridView ID="CensusDemographicGridView" runat="server" AutoGenerateColumns="False"
DataSourceID="CensusDemographicDataSource" >
<Columns>
<asp:BoundField DataField="NAME" HeaderText="NAME" SortExpression="NAME" />
<asp:BoundField DataField="KEY" HeaderText="KEY" SortExpression="KEY" />
<asp:BoundField DataField="POP00" HeaderText="POP00" SortExpression="POP00" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
今回もフレキシブルデータのサンプル同様に、画面レイアウトの都合上最低限のデータのみを表示していますが、他の項目もすべて取得済みなので容易に表示できます。

