Looker의 API 탐색기를 사용하면 코드를 한 줄도 작성하지 않고도 API 호출을 거의 즉시 테스트할 수 있습니다. Looker Marketplace에서 API 탐색기 확장 프로그램을 설치한 경우 Looker 애플리케이션 메뉴에서 API 탐색기를 클릭하여 API 탐색기를 열고 현재 API 참고 리소스를 볼 수 있습니다. API 탐색기 확장 프로그램을 설치하지 않았다면 Looker Marketplace의 애플리케이션 섹션에서 설치할 수 있습니다.
API 탐색기를 사용하여 Look을 동적으로 생성하고 기본 쿼리를 업데이트한 후 회사의 다양한 이해관계자에게 예약하는 데 가장 적합한 워크플로를 알아냈을 것입니다. 일반적인 다음 질문은 API 탐색기 외부에서 이러한 호출이나 함수를 실행하는 방법입니다. API에 액세스하는 일반적인 세 가지 방법은 다음과 같습니다.
- Looker의 API 소프트웨어 개발 키트(SDK)
- HTTP 요청
- 소프트웨어 개발 도구
이 페이지에서는 이러한 방법을 사용하는 방법을 안내합니다.
시작하기 전에: 인증 및 포트
Looker API에 액세스하는 방법에 관계없이 먼저 Looker 인스턴스에서 사용하는 개인 API 인증(클라이언트 ID 및 클라이언트 보안 비밀번호 형식)과 포트 번호, 이렇게 두 가지 정보가 필요합니다.
클라이언트 ID와 클라이언트 보안 비밀번호를 찾는 방법은 다음과 같습니다.
- Looker 관리자인 경우 관심 있는 사용자의 Looker UI에서 사용자 페이지를 방문하여 키 수정으로 이동합니다.
- Looker 관리자가 아닌 경우 Looker 관리자로부터 클라이언트 ID와 클라이언트 보안 비밀번호를 받습니다.
Google Cloud 또는 Microsoft Azure에서 호스팅되는 Looker 인스턴스와 2020년 7월 7일 이후에 생성된 Amazon Web Service(AWS)에서 호스팅되는 인스턴스의 경우 기본 Looker API 경로에서 포트 443을 사용합니다. 2020년 7월 7일 이전에 생성된 AWS에서 호스팅되는 Looker 인스턴스의 경우 기본 Looker API 경로에서 포트 19999를 사용합니다.
자체 인스턴스를 호스팅하는 경우 시스템 관리자에게 포트 번호를 확인합니다. Looker 관리 패널의 API 호스트 URL 필드에서 설정할 수 있습니다. Looker에서 관리 메뉴 드롭다운으로 이동하고 API를 선택하면 볼 수 있습니다.
포트에 관한 자세한 내용은 Looker API 시작하기 문서 페이지를 참조하세요. 다음 예시에서는 API 포트 19999를 사용하지만 인스턴스에서 사용 중인 포트를 확인해야 합니다.
옵션 1: Looker 소프트웨어 개발 키트(SDK) 사용
Looker는 Python, Ruby, Typescript 및 자바스크립트, Swift, Kotlin, R로 공식 Looker API 클라이언트 SDK를 제공합니다. Looker의 sdk-examples
GitHub 저장소에서 소스 코드와 예시를 확인할 수 있습니다.
SDK는 개발자가 특정 플랫폼이나 애플리케이션과 상호작용할 수 있게 해주는 도구 또는 라이브러리를 제공합니다. 이 경우 Looker의 SDK에는 일반적으로 API가 포함되어 있습니다. 웹 개발자이자 저자인 크리스토퍼 산도발의 예를 들어보겠습니다. "API는 집 안팎의 커뮤니케이션을 가능하게 하는 전화 연결선입니다. SDK는 주택 자체이자 모든 콘텐츠입니다." 그는 API와 SDK의 차이점이라는 유용한 도움말에서 SDK가 무엇이며 SDK가 API와 어떤 관련이 있는지 설명합니다.
Looker의 SDK에는 사용자가 사용하거나 사용해야 하는 모든 API 엔드포인트가 포함되어 있으며, 원하는 프로그래밍 언어를 사용하여 Looker와 원활하게 상호작용할 수 있는 방식으로 패키징됩니다. 이 함수를 사용하면 다음 태스크를 수행할 수 있습니다.
- Looker로 데이터 보내기
- Looker에서 데이터 가져오기
- Looker에서 데이터 업데이트
- Looker에서 데이터 삭제
다음은 Python SDK로 사용자를 업데이트하는 방법의 예시입니다.
-
looker_sdk.init
로 세션을 초기화합니다. -
sdk.update_user
로 사용자를 업데이트합니다.user_id
를 전달하여 업데이트할 사용자를 지정합니다. -
models.WriteUser
를 사용하여 사용자를 업데이트할 방법을 지정합니다.
#### Initialize API/SDK for more info go here: https://pypi.org/project/looker-sdk from looker_sdk import methods40, models sdk = looker_sdk.init40() me = sdk.me() # print(me) new_friend = sdk.update_user(user_id=29, body=models.WriteUser(first_name="newnew", last_name="new_again")) print(new_friend)
SDK 중 하나를 사용하는 동안 Visual Studio Code 및 Command-click(Visual Studio Code의 기본 설정에서 F12)과 같은 IDE를 사용하고 정의로 이동을 선택하면 모든 메서드와 메서드에서 허용되거나 반환되는 모든 매개변수를 확인할 수 있습니다. 또는 SDK GitHub 저장소에서 이를 확인하고 메서드와 모델 파일을 찾을 수 있습니다.
옵션 2: curl 또는 요청 라이브러리를 사용한 HTTP 요청
스크립트를 작성하거나 새로운 프로그래밍 언어를 배우는 데 몇 달 또는 몇 년을 쓰고 싶지 않다면 어떻게 해야 할까요? 이 경우 curl을 사용하여 HTTP 요청을 수행하여 Looker API를 활용할 수 있습니다.
HTTP 요청은 서버, 휴대전화 또는 스마트 TV 등의 목적지로 메시지를 전송합니다. HTTP 요청에는 몇 가지 유형이 있습니다. Looker API에서 이러한 요청을 사용하는 방법은 API 호출의 일부로 전달하는 메서드의 특성에 따라 다릅니다. 데이터를 제공하는 메서드, Looker로 데이터를 전송하는 메서드, 데이터를 업데이트하는 메서드, Looker에서 데이터를 삭제하거나 제거하는 메서드 등이 있습니다.
작업 | 방법 |
만들기 |
POST
|
읽기 |
GET
|
업데이트 |
PUT
|
삭제 |
DELETE
|
curl 명령어를 사용해 볼까요? 배경 지식이 필요하면 Zendesk에서 cURL 설치 및 사용하기 튜토리얼을 참조하세요.
Looker API에 HTTP 호출을 시작하려면 먼저 클라이언트 ID와 클라이언트 보안 비밀번호를 사용하여 Looker API의 login
엔드포인트를 호출해야 합니다. 이렇게 하면 액세스 토큰이 생성됩니다. 그런 다음 이 액세스 토큰을 각 호출과 함께 전달합니다. 액세스 토큰은 승인된 사용자가 전화를 걸도록 보장합니다.
이 페이지에서는 몇 가지 표기법을 사용하여 코드 샘플의 텍스트를 정보로 바꿔야 하는 위치를 나타냅니다. Looker에서 호스팅되는 인스턴스 URL의 형식은https://<hostname>.<subdomain>.<domain>.com
입니다. 이 페이지의 예시에서 이 표기법을 확인할 때<hostname>.<subdomain>.<domain>.com
섹션을 Looker 인스턴스의 URL로 바꿉니다. 또한<value>
표기법을 사용하여 적절한 값을 입력해야 하는 위치를 나타내고 코드 샘플의<value>
를 대체합니다. 예를 들어client_id=<value>&client_secret=<value>
를 표시하는 다음 코드에서 첫 번째<value>
를client_id
로 바꾸고 두 번째<value>
를client_secret
로 바꿉니다.
액세스 토큰을 가져오는 curl은 다음과 같습니다.
curl -d "client_id=<value>&client_secret=<value>" https://<hostname>.<subdomain>.<domain>.com:19999/login
응답은 다음과 같습니다.
{"access_token":"ABCDEFGHIJLMNOP1234","token_type":"Bearer","expires_in":3600}
토큰을 수신하면 Looker에서 API 사용자 인증 정보를 인식합니다. 토큰은 토큰 유효 기간을 나타내는 expires_in
값과 함께 반환됩니다. 대개 60분(3,600초) 정도 걸립니다.
이제 액세스 토큰이 있으므로 원하는 모든 호출을 할 수 있습니다. 모든 엔드포인트는 Looker API 4.0 참조 문서에 API 버전별로 나와 있습니다. Looker 커뮤니티 사이트는 다른 Looker 사용자에게 API 활용 방법에 관해 질문하거나, 권장사항을 학습하거나, API의 성공 사례를 다른 사용자와 공유하는 데 유용한 리소스입니다.
새 사용자를 만들려고 한다고 가정해 보겠습니다. 그러려면 다음 안내를 따르세요.
- 토큰을 전달하는 curl
POST
요청을 작성하여 Looker에 권한이 있음을 알립니다. - 새 사용자에게 지정하려는 속성을 Looker에 알리려면 본문(이 경우 JSON 형식)을 포함합니다. (API 호출에 필요한 일부 필드가 있으므로 Looker API 4.0 참조 문서를 참조하세요.)
- 사용할 엔드포인트(이 경우
users
)로 curl 표기법을 종료합니다.
curl -H "Authorization: token <value> " -H "Content-Type: application/json" -d "{\"first_name\": \"<value>\",\"last_name\": \"<value>\", \"email\":\"<value>\"}" https://<hostname>.<subdomain>.<domain>.com:19999/api/4.0/users
-H
는 헤더를 나타내고 -d
는 데이터를 나타냅니다. curl 명령어에 관한 자세한 내용은 이 GitHub gist를 참조하세요.
이전에 입력한 성, 이름, 이메일 주소로 사용자를 만들었습니다.
이를 스크립트로 작성하도록 하여 이 워크플로를 완료할 때마다 명령어를 작성할 필요가 없다면 어떻게 해야 할까요? Python requests
라이브러리와 같은 프로그래밍 언어 및 라이브러리를 사용할 수 있습니다.
예를 들어 다음은 requests
라이브러리를 사용해 Look ID(looks
호출의 <value>
)를 사용하여 Look을 가져오고 새 필터를 적용한 다음 결과를 CSV 파일로 다운로드하는 스크립트입니다.
import requests ID = '<value>' SECRET = '<value>' PARAMS = {'client_id':<value>, 'client_secret': <value>} URL = "https://<hostname>.<subdomain>.<domain>.com:19999/api/4.0/login" r = requests.post(url = <value>, params = <value>, verify=False) data = r.json() token = data['access_token'] print(token) headers = {'Authorization': "Bearer " + token} print(headers) look_url = "https://<hostname>.<subdomain>.<domain>.com:19999/api/4.0/looks/<value>" look = requests.get(look_url, headers=headers, verify=False) json = look.json() query = json['query'] ### ADD MODEL HERE ### ADD FILTER body = { "model":"<value>", "view":query['view'], "fields":query['fields'], "filters":{<value>} } print(body) run_inline = "https://<hostname>.<subdomain>.<domain>.com:19999/api/4.0/queries/run/csv" run_query = requests.post(run_inline, headers = headers, json=body, verify=False) print(run_query._content) print(run_query.url)
옵션 3: 소프트웨어 개발 도구
Postman 또는 Paw와 같은 도구를 사용하면 사용자는 그래픽 사용자 인터페이스(GUI)를 통해 API 엔드포인트를 상호작용하거나 활용할 수 있습니다. 소프트웨어 개발 도구에도 HTTP 요청과 동일한 프로세스가 적용됩니다. 첫 번째 단계는 클라이언트 보안 비밀번호와 클라이언트 ID로 로그인하는 것입니다. 그런 다음 Postman에 나온 것처럼 액세스 토큰을 Bearer 토큰으로 저장하여 후속 API 호출을 승인합니다.
Postman 또는 기타 소프트웨어 개발 도구(예: Paw)를 사용하면 UI 내에서 승인, 본문, 매개변수, 헤더를 모두 지정한 후 요청을 생성할 수 있습니다. 보내기를 누르면 엔드포인트도 실행됩니다.
다음 단계 (주의사항)
이제 SDK, HTTP 요청, 소프트웨어 개발 도구를 통해 Looker API를 사용할 수 있습니다. 직접 테스트해 보세요. 하지만 API를 사용하면 사용자가 퇴사한 후 일정을 만들거나 재할당하는 등의 프로세스를 자동화할 수 있지만 API를 잘못 사용하면 인스턴스가 손상될 수 있습니다.
몇 가지 일반적인 유의사항:
- 권한을 수정하거나 사용자를 삭제할 때, 특히 일괄로 삭제할 때 주의해야 합니다. 관리자를 비롯한 많은 사용자를 삭제하거나 잠글 수 있으며, 이러한 작업은 쉽게 취소할 수 없습니다.
- API 호출을 통해 인스턴스 사용량이 늘어나므로 최적의 성능을 위해 API가 사용 중지되도록 예약해 보세요.
- 각 인스턴스 서버에는 파일 제한이 열려 있으므로 무책임한 API 사용을 통해 인스턴스의 비정상 종료가 발생할 수 있습니다.
- 프로덕션에 추가하기 전에 워크플로와 함수를 소규모로 테스트하세요.
- API 사용자 인증 정보를 공유하거나 다른 사용자가 액세스할 수 있는 파일에 보관하지 마세요.
궁금한 점이 있거나 멋진 아이디어를 공유하고 싶다면 Looker 커뮤니티를 확인하세요. 개선해야 할 점이나 문서에 추가하고 싶은 다른 예시가 있다면 언제든지 알려주세요.