엑셀 Power Query Formula.Firewall 오류 해결: 개인 정보 수준과 쿼리 구조 확인

엑셀 Power Query에서 여러 데이터 원본을 결합하거나 다른 쿼리의 결과를 참조할 때 Formula.Firewall 오류가 나타날 수 있습니다.

이 오류는 수식의 철자가 틀렸다는 뜻이 아닙니다. Power Query가 한 데이터 원본의 정보가 다른 원본으로 의도치 않게 전달될 가능성을 확인했거나, 현재 쿼리의 참조 구조를 안전하게 구분하지 못했을 때 작업을 중지한 것입니다.

해결 방법은 오류 메시지에 따라 달라집니다. 먼저 메시지 전체를 확인하고, 개인 정보 수준 문제인지 쿼리 구조 문제인지 구분해야 합니다.


엑셀 Power Query에서 데이터 원본 결합 중 발생하는 Formula.Firewall 오류
Formula.Firewall 오류는 데이터 원본의 개인 정보 수준이 충돌하거나, 다른 쿼리를 참조하면서 데이터 원본에도 직접 접근할 때 발생할 수 있습니다.

이 글은 Microsoft의 Power Query 데이터 개인 정보 보호 방화벽과 개인 정보 수준 공식 문서를 기준으로 작성했습니다. Excel 버전에 따라 메뉴 이름이나 위치가 조금 다를 수 있습니다.

화면에 표시된 오류 문구부터 확인하세요

Formula.Firewall 오류는 문장이 비슷하지만 다음 두 형태로 구분할 수 있습니다.

오류 유형 A: 다른 쿼리 참조와 원본 접근 충돌
Formula.Firewall:
Query 'Query1' (step 'Source') references other queries or steps,
so it may not directly access a data source.
Please rebuild this data combination.

현재 쿼리가 다른 쿼리의 결과를 참조하면서 같은 쿼리 안에서 파일, 웹사이트 또는 데이터베이스에도 직접 접근할 때 확인해야 합니다.

오류 유형 B: 개인 정보 수준 충돌
Formula.Firewall:
Query 'Query1' (step 'Source') is accessing data sources
that have privacy levels which cannot be used together.
Please rebuild this data combination.

결합하려는 데이터 원본에 서로 호환되지 않는 개인 정보 수준이 설정돼 있을 때 확인해야 합니다.

오류 창을 닫기 전에 쿼리 이름과 단계 이름도 함께 확인하세요. 메시지의 Query1 부분에는 문제가 발생한 쿼리 이름이, Source 부분에는 Power Query가 멈춘 단계 이름이 표시됩니다.

오류 유형 B라면 데이터 원본의 개인 정보 수준 확인

오류 문구에 다음 내용이 포함돼 있다면 개인 정보 수준부터 확인합니다.

data sources that have privacy levels which cannot be used together

Power Query는 데이터 원본을 공개, 조직, 비공개 등의 수준으로 구분합니다. 이 설정은 데이터가 다른 원본으로 전달될 수 있는 범위를 결정합니다.

개인 정보 수준의 의미

수준 일반적인 사용 대상 주의할 점
공개 누구나 볼 수 있는 공개 웹 데이터 사내 자료나 개인정보에 사용하지 않음
조직 조직 내부에서 공유할 수 있는 업무 데이터 회사 밖으로 보내면 안 되는 자료인지 확인
비공개 개인정보나 민감한 내부 데이터 다른 원본과의 데이터 교환이 강하게 제한됨

오류를 없애기 위해 모든 데이터 원본을 임의로 공개나 조직으로 바꾸면 안 됩니다. 실제 데이터의 공개 범위와 민감도에 맞게 설정해야 합니다.

Excel에서 데이터 원본 설정 열기

  1. Excel 상단에서 데이터 탭을 선택합니다.
  2. 데이터 가져오기를 선택합니다.
  3. 데이터 원본 설정을 선택합니다.
  4. 목록에서 문제가 발생한 데이터 원본을 선택합니다.
  5. 사용 권한 편집 또는 권한 편집을 선택합니다.
  6. 개인 정보 수준을 실제 데이터 성격에 맞게 선택합니다.
  7. 확인을 누른 뒤 다른 원본도 같은 방법으로 확인합니다.

Excel 버전에 따라 Power Query 편집기의 파일 → 옵션 및 설정 → 데이터 원본 설정에서 표시될 수도 있습니다.

설정이 같아야 한다는 뜻은 아닙니다
두 데이터 원본의 개인 정보 수준을 무조건 같은 값으로 맞추는 것이 목표가 아닙니다. 각 원본을 실제 보안 수준에 맞게 지정하고, 해당 결합이 안전한지 다시 판단해야 합니다.

예를 들어 사내 고객 목록의 고객번호를 공개 웹 API의 검색 조건으로 전달하면 사내 데이터의 일부가 외부 서버로 전송될 수 있습니다. 이 경우에는 단순히 설정을 낮추기보다 데이터 결합 방식 자체를 다시 검토해야 합니다.

오류 유형 A라면 쿼리의 참조 구조 확인

오류 문구에 다음 내용이 포함돼 있다면 현재 쿼리가 다른 쿼리를 참조하면서 데이터 원본에도 직접 접근하고 있는지 확인합니다.

references other queries or steps,
so it may not directly access a data source

Power Query의 데이터 개인 정보 보호 방화벽은 쿼리를 여러 파티션으로 구분합니다. 하나의 파티션이 다른 파티션을 참조하면서 데이터 원본에 직접 접근하는 구조가 되면 오류가 발생할 수 있습니다.

문제가 발생할 수 있는 구조

다음 예제에서 Parameter_Query는 다른 쿼리입니다. 현재 쿼리는 이 값을 참조하면서 Web.Contents로 웹 원본에도 직접 접근합니다.

let
    ParameterValue = Parameter_Query,
    Source = Web.Contents(ParameterValue)
in
    Source

이 구조에서는 한 쿼리가 다른 쿼리를 참조하는 작업과 외부 데이터 원본에 접근하는 작업을 함께 수행합니다.

다음 두 가지 방식 중 현재 파일에 적합한 쪽을 선택할 수 있습니다.

수정 방법 1: 원본 쿼리와 최종 결합 쿼리 분리

로컬 Excel 데이터와 웹 데이터를 결합한다면 각 원본에 접근하는 쿼리를 따로 만들고, 최종 쿼리는 이미 만들어진 두 쿼리만 참조하도록 구성할 수 있습니다.

쿼리 구성 예

Query_Local: 로컬 Excel 표만 가져옴
Query_Web: 웹 데이터만 가져옴
Query_Result: 앞의 두 쿼리를 참조해 병합

최종 병합 쿼리는 다음과 같은 구조로 만들 수 있습니다.

let
    LocalData = Query_Local,
    WebData = Query_Web,

    Merged = Table.NestedJoin(
        LocalData,
        {"Key"},
        WebData,
        {"Key"},
        "WebRows",
        JoinKind.LeftOuter
    )
in
    Merged

이 예제는 두 쿼리에 모두 Key라는 열이 있다고 가정합니다. 실제 파일에서는 병합에 사용할 열 이름을 정확히 입력해야 합니다.

중간 쿼리를 연결 전용으로 설정

  1. Power Query 편집기에서 홈 → 닫기 및 다음으로 로드를 선택합니다.
  2. 다음으로 로드를 선택합니다.
  3. 연결만 만들기를 선택합니다.
  4. Query_LocalQuery_Web에 각각 적용합니다.
  5. 실제 결과가 필요한 Query_Result만 시트나 데이터 모델에 로드합니다.

연결 전용 설정은 중간 쿼리가 시트에 각각 중복 로드되는 것을 방지합니다. Formula.Firewall 해결의 핵심은 연결 전용 자체가 아니라, 원본 접근 단계와 다른 쿼리를 참조하는 병합 단계를 구분하는 것입니다.

쿼리를 나누기만 하면 항상 해결되는 것은 아닙니다
개인 정보 수준이 실제로 호환되지 않거나 한 원본의 값을 다른 원본의 요청 조건으로 전달하는 구조라면 쿼리를 분리한 뒤에도 오류가 남을 수 있습니다. 개인 정보 수준과 데이터 전달 방향을 함께 확인해야 합니다.

수정 방법 2: 불필요한 중간 쿼리를 하나로 합치기

다른 쿼리에서 가져오는 값이 단순한 파일 경로나 날짜 같은 매개변수이고, 별도 쿼리로 유지할 이유가 없다면 해당 단계를 현재 쿼리 안으로 가져오는 방법을 검토할 수 있습니다.

예를 들어 현재 통합 문서의 이름 있는 표에서 파일 경로를 가져오고, 그 파일을 바로 여는 구조는 다음과 같이 한 쿼리 안에서 작성할 수 있습니다.

let
    ParameterTable =
        Excel.CurrentWorkbook(){[Name="tblParameter"]}[Content],

    FilePath =
        Text.From(ParameterTable{0}[FilePath]),

    Source =
        Excel.Workbook(
            File.Contents(FilePath),
            null,
            true
        )
in
    Source

이 예제는 현재 Excel 파일에 tblParameter라는 표가 있고, 해당 표에 FilePath라는 열이 있다고 가정합니다.

다른 쿼리를 참조하던 단계를 현재 쿼리에 포함하면 references other queries 오류를 피하는 데 도움이 될 수 있습니다. 하지만 결합하는 데이터 원본의 개인 정보 수준이 호환되지 않으면 다른 형태의 Formula.Firewall 오류가 나타날 수 있습니다.

쿼리 종속성 화면으로 연결 구조 확인

어떤 쿼리가 어떤 쿼리를 참조하는지 복잡하다면 Power Query 편집기의 쿼리 종속성 화면을 확인하세요.

  1. Power Query 편집기를 엽니다.
  2. 상단에서 보기 탭을 선택합니다.
  3. 쿼리 종속성을 선택합니다.
  4. 오류가 발생한 쿼리로 연결되는 화살표를 확인합니다.
  5. 원본 접근과 다른 쿼리 참조가 한 쿼리에 섞여 있는지 확인합니다.

같은 원본을 여러 쿼리에서 반복해서 불러오고 있거나, 한 쿼리의 결과가 다시 원본 요청의 매개변수로 들어가는 구조도 함께 확인합니다.

개인 정보 수준 무시 설정은 마지막에 판단

Excel에는 데이터 원본의 개인 정보 수준 검사를 무시하는 옵션이 있습니다. 이 설정은 빠른 결합 또는 개인 정보 수준 무시로 표시될 수 있습니다.

Excel에서는 일반적으로 다음 위치에서 확인할 수 있습니다.

  1. 데이터 → 데이터 가져오기 → 쿼리 옵션을 선택합니다.
  2. 왼쪽에서 현재 통합 문서 → 개인 정보를 선택합니다.
  3. 개인 정보 수준을 무시하는 옵션이 있는지 확인합니다.
회사 자료가 포함돼 있다면 바로 사용하지 마세요
개인 정보 수준을 무시하면 Power Query가 결합한 데이터의 개인 정보를 보장할 수 없습니다. 고객정보, 인사자료, 매출원장이나 인증정보가 포함된 파일에서는 관리자나 보안 담당자의 확인 없이 사용하지 않는 것이 안전합니다.

다음 조건을 모두 충족하는 통제된 파일에서만 제한적으로 검토하세요.

  • 모든 데이터 원본의 내용과 운영자를 알고 있음
  • 민감하거나 기밀인 데이터가 포함되지 않음
  • 한 원본의 값이 외부 서비스로 전달돼도 문제가 없음
  • 파일이 다른 사용자나 외부 조직에 배포되지 않음
  • 설정을 무시해야 하는 이유를 명확히 알고 있음

단순히 오류 메시지를 없애기 위한 첫 번째 방법으로 사용하지 마세요. 먼저 개인 정보 수준과 쿼리 구조를 수정하는 것이 우선입니다.

설정 변경 후 다시 새로 고침하는 순서

개인 정보 수준이나 쿼리 구조를 변경한 뒤에는 Power Query 미리 보기와 Excel 새로 고침을 차례로 확인합니다.

  1. Power Query 편집기에서 오류가 표시된 쿼리를 선택합니다.
  2. 홈 → 미리 보기 새로 고침을 실행합니다.
  3. 적용된 단계에서 오류가 남아 있는지 확인합니다.
  4. 닫기 및 로드를 선택합니다.
  5. Excel에서 데이터 → 모두 새로 고침을 실행합니다.

미리 보기에서는 정상인데 Excel의 모두 새로 고침에서 오류가 발생한다면 중간 쿼리만 확인하지 말고, 해당 쿼리를 참조하는 최종 쿼리와 연결도 함께 확인해야 합니다.

오류 문구에 따른 최종 조치

references other queries or steps
다른 쿼리 참조와 데이터 원본 직접 접근이 같은 쿼리에 있는지 확인합니다. 원본 쿼리와 최종 병합 쿼리를 분리하거나 불필요한 중간 쿼리를 현재 쿼리에 포함합니다.
privacy levels which cannot be used together
데이터 원본 설정에서 각 원본의 개인 정보 수준을 실제 데이터 성격에 맞게 지정합니다. 오류를 없애기 위해 보안 수준을 임의로 낮추지 않습니다.
쿼리를 수정해도 오류가 계속됨
쿼리 종속성 화면에서 다른 쿼리와 원본의 연결 구조를 확인하고, 한 원본의 값이 다른 원본의 요청 조건으로 전달되는지 점검합니다.
개인 정보 수준 무시를 고려 중임
데이터가 모두 비민감하고 통제된 환경인지 먼저 확인합니다. 중요한 업무 데이터가 포함돼 있다면 설정을 무시하지 않습니다.

내용 확인에 사용한 Microsoft 공식 자료

공식 문서 확인일: 2026년 7월 28일

Post a Comment

다음 이전