고정 쿼리 응용 프로그램 만들기

업데이트 날짜: 2014년 2월

 

DataMarket 로고

데이터 게시자가 고정 쿼리 데이터 집합으로 지정한 마켓플레이스 데이터 집합을 프로그래밍 방식으로 사용하려면 Visual Studio에서 다운로드 가능한 서비스 클래스를 사용합니다.

이 문서의 단계를 진행하기 전에 다음 항목을 준비해야 합니다.

  • 유효한 Windows Live ID 계정. Live ID가 없으면 Windows Live 홈 페이지로 이동하여 등록합니다.

  • 유효한 마켓플레이스 계정. 마켓플레이스가 없으면 마켓플레이스 계정 만들기 항목으로 이동하여 해당 지침을 따릅니다.

  • 응용 프로그램에서 사용하려는 마켓플레이스 고정 쿼리 데이터 집합에 대한 구독. 고정 데이터 집합을 구독하지 않은 경우 데이터 제품 구독으로 이동하여 해당 지침을 따릅니다.

 

섹션 설명

1단계: Visual Studio에서 프로젝트 만들기

마켓플레이스 데이터를 사용하는 새 콘솔 프로젝트를 시작하기 위해 Visual Studio에서 수행해야 하는 단계를 설명합니다.

2단계: 데이터 서비스에 대한 서비스 클래스 추가

마켓플레이스 데이터를 사용하기 위해 서비스 참조를 추가하려면 수행해야 하는 단계를 설명합니다.

3단계: System.Data.Services.Client 추가

System.Data.Services.Client에 대한 참조를 프로젝트에 추가하는 단계를 설명합니다.

4단계: 관리 코드를 통해 데이터 사용

마켓플레이스 고정 쿼리 데이터 집합을 사용하기 위해 작성하는 코드에 대해 설명합니다.

완성된 프로그램 코드

완성된 프로그램의 코드를 제공합니다.

메타데이터

이 고정 쿼리 클래스의 예제 XML 메타데이터를 제공합니다.

  1. 시작 메뉴에서 Visual Studio를 찾습니다.

  2. Visual Studio를 마우스 오른쪽 단추로 클릭합니다.

  3. 드롭다운에서 관리자 권한으로 실행을 클릭합니다.

  4. 컴퓨터를 변경하도록 이 프로그램(devenv.exe)에 허용할지 묻는 메시지가 표시되면 를 클릭합니다.

  1. Visual Studio 시작 페이지에서 새 프로젝트...를 선택합니다.

  2. 새 프로젝트 대화 상자에서 Visual C#콘솔 응용 프로그램을 선택합니다. Visual Basic을 사용하려는 경우 Visual Basic콘솔 응용 프로그램을 선택합니다.

  3. 새 프로젝트 대화 상자 윗부분의 왼쪽 드롭다운 목록에서 .NET Framework 4를 선택합니다.

    Visual Studio 2010에서는 .NET Framework 4가 기본적으로 선택되어 있습니다. 이전 버전의 Visual Studio를 사용하며 .NET Framework 4가 설치되어 있지 않으면 .NET Framework 4 다운로드 페이지로 이동하여 .NET Framework 4를 다운로드 및 설치합니다.

  4. 프로젝트에 적절한 이름을 지정합니다. 예를 들어 이 항목의 프로젝트에는 CensusDemographics라는 이름을 지정할 수 있습니다.

  5. 확인을 클릭합니다.

1단계에서 관리자 권한으로 Visual Studio를 시작하고 새 콘솔 응용 프로그램을 만든 후에는 사용하려는 데이터 서비스에 대한 서비스 클래스를 다운로드하여 추가합니다.

  1. 마켓플레이스로 이동합니다.

  2. 내 데이터 탭을 선택합니다.

  3. Alteryx – Census Demographic Data 데이터 서비스를 찾습니다.

  4. 서비스 이름 오른쪽의 사용을 클릭합니다.
    그러면 "세부 정보 페이지"로 이동합니다.

  5. 페이지 오른쪽의 .NET C# 클래스 라이브러리를 클릭합니다.

    그림 6.2 - 고정된 쿼리에 대한 클래스 라이브러리


    그림 1 - .NET C# 클래스 라이브러리 다운로드

  6. 대화 상자에서 저장 단추를 클릭합니다.

  7. CensusDemographicDataContainer.cs 파일을 프로젝트 폴더에 저장합니다.

    Tip
    이 프로젝트에서 같은 데이터 게시자의 데이터 서비스를 둘 이상 사용하려면 각 클래스 라이브러리 파일의 이름이 고유하며 적절한지 확인하여 서비스 클래스 파일이 다른 서비스 클래스 파일을 덮어쓰지 않도록 하세요.

  1. Visual Studio 프로젝트로 돌아옵니다.

  2. 솔루션 탐색기에서 굵게 표시된 프로젝트 이름을 마우스 오른쪽 단추로 클릭합니다.

  3. 드롭다운 메뉴에서 기존 항목 추가를 선택합니다.

  4. 방금 프로젝트 폴더에 다운로드한 서비스 프록시 클래스를 선택합니다.

  5. 추가를 클릭합니다.

  6. 솔루션 탐색기에서 파일 이름을 두 번 클릭합니다.

  7. 이 서비스 클래스의 네임스페이스를 찾습니다.
    예를 들어 namespace Alteryx를 찾습니다.

  8. 마켓플레이스 데이터 집합을 사용하는 코드 파일 맨 위에 다음 코드를 추가합니다.

    
    using System.Net;  // needed for authentication
    using Alteryx;     // the namespace of your service class
    
    

응용 프로그램 하나에서 여러 데이터 집합을 사용하는 경우 각 데이터 서비스에 대해 2~8단계를 반복합니다.

데이터 집합용 서비스 클래스뿐 아니라 System.Data.Services.Client에 대한 참조도 프로젝트에 추가해야 합니다.

  1. 솔루션 탐색기를 엽니다.

  2. 참조를 마우스 오른쪽 단추로 클릭합니다.

  3. 드롭다운 메뉴에서 참조 추가를 선택합니다.

  4. 대화 상자에서 .NET 탭을 클릭합니다.

  5. System.Data.Services.Client를 찾습니다.

  6. 확인을 클릭합니다.

서비스 클래스를 정상적으로 가져오고 System.Data.Services.Client에 대한 참조를 추가한 후에는 컨테이너 클래스의 메서드를 호출해 데이터 집합을 쿼리할 수 있습니다.

다음 코드는 CensusDemographicDataContainer.cs 데이터 집합을 사용하는 간단한 콘솔 응용 프로그램을 정의합니다. 서비스 클래스는 응용 프로그램 코드의 서비스 매개 변수를 강력한 형식의 메서드 매개 변수로 표시하는 메서드를 미리 구성했으며 서비스 클래스 개체의 심볼 이름이 데이터 집합에 고유하므로 어느 특정 데이터 집합을 사용하는지 확인해야 합니다.

  1. 프로젝트 네임스페이스 내에서 CensusDemographicData 공용 클래스를 만듭니다.

  2. 클래스 내에서 다음의 두 전용 변수를 만듭니다.

    1. 서비스에 대한 URI
      private Uri serviceUri;

    2. 인증 자격 증명용 서비스 컨테이너입니다.
      private CensusDemographicDataContainer context;

    
    class CensusDemographicData
    {
        private Uri serviceUri;
        private CensusDemographicDataContainer context;
    }
    
    
  3. CensusDemographicData 클래스용 생성자를 추가합니다.
    생성자는 두 전용 변수와 사용자 자격 증명을 초기화합니다.
    ROOT_SERVICE_URL은 서비스 루트 URL입니다. 서비스 루트 URL을 찾는 방법은 Get the Service Root URL를 참조하세요.
    context는 사용자 자격 증명에 사용되는 서비스 컨테이너입니다.
    서버의 형식에 추가되는 속성과 관련하여 클라이언트의 효율성을 유지하기 위해 IgnoreMissingProperties 속성은 true로 설정합니다. 추가 정보는 MSDN 문서를 참조하세요.
    USER_ID는 Live ID입니다.
    SECURE_ACCOUNT_KEY는 이 응용 프로그램에 사용하는 마켓플레이스 계정 키입니다. (마켓플레이스 계정 관리 참조)

    
    class CensusDemographicData
    {
        private Uri serviceUri;
        private CensusDemographicDataContainer context;
    
        // class constructor
        public CensusDemographicData()
        {
            serviceUri = new Uri(ROOT_SERVICE_URL);
            context = new CensusDemographicDataContainer(serviceUri);
            context.IgnoreMissingProperties = true;
            context.Credentials = new NetworkCredential(USER_ID, 
                                                        SECURE_ACCOUNT_KEY);
        }
    }
    
    
  4. CensusDemographicData 클래스에서 제네릭 목록을 반환하는 공용 메서드(Sub)를 만듭니다.
    이 프로그램에서 제네릭 형식은 CensusDemographicDataEntity입니다.
    이 메서드는 데이터 서비스를 쿼리하여 성공하는 경우 결과 집합을 IList<>(IList (Of ))로 반환합니다. 쿼리가 실패하면 메서드는 null(Nothing)을 반환합니다.

    
    class CensusDemographicData
    {
        private Uri serviceUri;
        private CensusDemographicDataContainer context;
        // constructor
        public CensusDemographicData()
        {
            serviceUri = new Uri(ROOT_SERVICE_URL);
            context = new CensusDemographicDataContainer(serviceUri);
            context.IgnoreMissingProperties = true;
            context.Credentials = new NetworkCredential(USER_ID, 
                                                        SECURE_ACCOUNT_KEY);
        }
    
        // the method that queries the service and returns the IList<> of demographic data
        public IList<CensusDemographicDataEntity> GetCensusDemographicData()
        {
            IEnumerable<CensusDemographicDataEntity> query;
    
            query = context.GetCensusDemographicData(LONGITUDE,LATITUDE,RADIUS,null);
            // The function GetCensusDemographicData is the fixed web function that you can use to request data from this service
            //    It is found in the service class you downloaded and added to your project.
            // Note: either of the last two parameters may be null but both cannot be null
    
            try
            {
                return query.ToList();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Census ERROR {0}",ex.Message);
                return null;
            }
        }
    }
    
    

  1. 다음의 두 전용 변수를 사용하여 Main() 메서드(Sub Main())를 작성합니다.
    메서드에서 데이터 목록을 받는 제네릭 IList
    클래스를 인스턴스화하는 변수

    
    static void Main(string[] args)
    {
        IList<CensusDemographicDataEntity> demographicsList;
        CensusDemographicData dataClass; 
    }
    
    
  2. 클래스와 해당 메서드를 사용하는 코드를 Main에 추가합니다.

    1. CensusDemographicdata 클래스의 인스턴스를 만듭니다.

    2. 공용 GetCensusDemographicData 메서드를 호출합니다.

    3. 메서드에서 목록을 통해 목록 루프를 반환하면 내용을 출력합니다.

    
    static void Main(string[] args)
    {
        IList<CensusDemographicDataEntity> demographicList;
        CensusDemographicData dataClass; 
    
        dataClass = new CensusDemographicData();
        demographicsList = dataClass.GetCensusDemographicData();
    
        if (demographicsList != null)
        {
            Console.WriteLine("Demographic Data");
            Console.WriteLine("0,-15} {1,10} {2,6} {3,4}", "Name", 
                                                           "Population", 
                                                           "Female", 
                                                           "Male");
            foreach (CensusDemographicDataEntity entity in demographicList)
                Console.WriteLine("{0,-15} {1,10} {2,6} {3,4}", entity.NAME,
                                                                entity.POP00,
                                                                entity.SEX00FEM,
                                                                entity.SEX00MAL);
                }
                Console.Write("Tap any key to end. ");
                Console.ReadKey();
        }
    }
    
    


using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;           // needed for authentication
using System.Text;
using Alteryx;              // service class for this data service

namespace FixedDataQuery
{
    //============================================ Program class
    class Program
    {
        static void Main(string[] args)
        {
            IList<CensusDemographicDataEntity> demographicList;
            CensusDemographicData censusData = new CensusDemographicData();
            demographicList = censusData.GetCensusDemographicData();

            //============================================ CENSUS DEMOGRAPHIC DATA OUTPUT
            // confirm data was returned from query
            if (demographicList != null)
            {
                // print column headings
                Console.WriteLine("Demographic Data");
                Console.WriteLine("{0,-15} {1,10} {2,6} {3,4}", "Name", 
                                                                "Population", 
                                                                "Female", 
                                                                "Male");
                // print query results
                foreach (CensusDemographicDataEntity entity in demographicList)
                    Console.WriteLine("{0,-15} {1,10} {2,6} {3,4}", entity.NAME,
                                                                    entity.POP00,
                                                                    entity.SEX00FEM,
                                                                    entity.SEX00MAL);
            }
            // pause until a key is struck
            Console.Write("Tap any key to end. ");
            Console.ReadKey();
            Console.WriteLine();
        }
    }

    //============================================ CensusDemographicData class
    class CensusDemographicData
    {
        private const string USER_ID = "yourLiveId";
        private const string SECURE_ACCOUNT_ID = "yourMarketplaceAccountKey";  // not your Live password
        private const string ROOT_SERVICE_URL = "https://api.datamarket.azure.com/Data.ashx/Alteryx/CensusDemographicData";

        private const double LONGITUDE = 47.394;
        private const double LATITUDE = -122.392;
        private const double RADIUS = 10.0; 

        private Uri serviceUri;
        private CensusDemographicDataContainer context;

        // ------ constructor
        public CensusDemographicData()
        {
            serviceUri = new Uri(ROOT_SERVICE_URL);
            context = new CensusDemographicDataContainer(serviceUri);
            context.IgnoreMissingProperties = true;
            context.Credentials = new NetworkCredential(USER_ID,
                                                        SECURE_ACCOUNT_ID);
        }

        // ------ method that queries the dataset and returns the resultset (or null)
        public IList<CensusDemographicDataEntity> GetCensusDemographicData()
        {
            IEnumerable<CensusDemographicDataEntity> query;

            query = context.GetCensusDemographicData(LONGITUDE,LATITUDE,RADIUS,null);
            // The function GetCensusDemographicData is the fixed web function that you can use to request data from this service
            // Note: either of the last two parameters may be null but both cannot be null

            try
            {
                return query.ToList();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Census ERROR {0}",ex.Message);
                return null;
            }
        }
    }
}

코드를 작성하면 데이터 집합의 메타데이터가 IntelliSense에 알립니다. IDE가 IntelliSense를 지원하지 않거나 IntelliSense가 작동하지 않으면 서비스에서 메타데이터를 가져올 수 있습니다.

  1. 데이터 집합의 서비스 루트 URI를 가져옵니다.
    서비스 루트 URI를 가져오는 방법에 대한 지침은 Get the Service Root URL 섹션을 참조하세요.

  2. 서비스 루트 URL 끝에 /$metadata를 추가합니다.
    예를 들어 서비스 루트 URL이 https://datamarket.azure.com/Data.ashx/fabrikam.com/inventory이면 메타데이터 URL은 https://datamarket.azure.com/Data.ashx/fabrikam.com/inventory/$metadata입니다.

  3. 브라우저에서 메타데이터 URL로 이동합니다.

  4. 메타데이터를 구문 분석합니다.
    Alteryx – Census Demographic Data 데이터 서비스용 메타데이터는 다음과 같습니다.


<?xml version="1.0" encoding="utf-8" ?> 
<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:dr="http://schemas.microsoft.com/dallas/2010/04">
   <edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0">
      <Schema xmlns="http://schemas.microsoft.com/ado/2009/08/edm" Namespace="Alteryx" Alias="Alteryx">
         <EntityContainer Name="CensusDemographicDataContainer">
            <EntitySet Name="CensusDemographicDataEntitySet" EntityType="Alteryx.CensusDemographicDataEntity" /> 
                   <FunctionImport Name="GetCensusDemographicData" EntitySet="CensusDemographicDataEntitySet" ReturnType="Collection(Alteryx.CensusDemographicDataEntity)">
               <Parameter Name="Latitude" Type="Edm.Double" Mode="In" Nullable="false" /> 
               <Parameter Name="Longitude" Type="Edm.Double" Mode="In" Nullable="false" /> 
               <Parameter Name="Radius" Type="Edm.Double" Mode="In" Nullable="true" /> 
               <Parameter Name="Minutes" Type="Edm.Double" Mode="In" Nullable="true" /> 
            </FunctionImport>
         </EntityContainer>
         <EntityType Name="CensusDemographicDataEntity">
            <Property Name="NAME" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="KEY" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="POP00" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="SEX00FEM" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XSEX00FEM" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="SEX00MAL" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XSEX00MAL" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE000004" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE000509" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE001013" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE001014" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE001417" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE001820" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE002024" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE002124" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE002529" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE003034" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE003539" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE004044" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE004549" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE005054" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE00GT55" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE005559" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE006064" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE006569" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE007074" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE007579" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE008084" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE00G85" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="AGE00MED" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00GR911" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00ASSOC" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00BACH" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00GRAD" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00HSCH" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00NSCH" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00LTGR9" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00SCOLL" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00AMIND" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00ASIAN" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00BLACK" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIS00HISP" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00HAWAI" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIS00NHISP" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00OTHER" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00MULT" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00WHITE" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN00LT10" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN001015" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN001520" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN002025" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN002530" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN003035" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN003540" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN004045" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN004550" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN005060" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN006075" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN0075100" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN0010025" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN0012550" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN0015020" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN00GT200" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="HIN00MED" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="INC00AVEHH" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="INC00PCI" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="HOO00MEDN" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI00BF69" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI007079" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI008089" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI009094" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI009598" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI009900" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="HOU00STAB" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="HOU00TURN" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
         </EntityType>
      </Schema>
   </edmx:DataServices>
</edmx:Edmx>

메타데이터에서 확인할 수 있는 중요한 정보는 다음과 같습니다.

  • 데이터를 요청하기 위해 호출하는 이 데이터 집합의 고정 웹 함수 이름과 해당 함수의 반환 형식
    <FunctionImport Name="GetCensusDemographicData" EntitySet="CensusDemographicDataEntitySet" ReturnType="Collection(Alteryx.CensusDemographicDataEntity)">


  • 함수로 매개 변수를 전달하는 순서와 각 매개 변수의 이름, 형식, 모드, 필수 여부
    <Parameter Name="Latitude" Type="Edm.Double" Mode="In" Nullable="false" />
    <Parameter Name="Longitude" Type="Edm.Double" Mode="In" Nullable="false" />
    <Parameter Name="Radius" Type="Edm.Double" Mode="In" Nullable="true" />
    <Parameter Name="Minutes" Type="Edm.Double" Mode="In" Nullable="true" />
    매개 변수 중 두 개에는 값을 반드시 지정해야 하며(Nullable="false") 두 개에는 필요에 따라 값을 지정하면 됩니다(Nullable="true").


  • 반환되는 필드의 이름, 데이터 형식 및 null(Nothing)이 유효한 값인지 여부
    <Property Name="HOU00TURN" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" />
    고정 쿼리 데이터 집합에서 dr:Queryable 특성은 항상 “false”입니다.


  • 이 데이터 집합의 엔터티 이름
    <EntityType Name="CensusDemographicDataEntity">


  • 이 데이터 집합의 컨테이너 이름
    <EntityContainer Name="CensusDemographicDataContainer">


표시: