필드에 대한 집계 정보를 얻는 가장 지속 가능한 방법은 무엇입니까?


12

EntityFieldQuery는 SQL과 무관하므로 필드 데이터에서 집계 함수 (SUM, AVG 등)를 실행하는 데 사용되지 않습니다. 즉, 그러한 작업은 때때로 합법적으로 실행되어야합니다. 에 따르면 SQL의 EntityFieldQuery와 기능 , 특히 EntityFieldQuery 방법 집계 함수 SUM, ARG와 MAX를 사용하는 방법 , SQL 쿼리를 사용할 필요가 있고, 그 방법은 내 유스 케이스 최고의 맞습니다. 나는 어제 @chx와 이야기하고 있었고 필드 이름과 열 이름을 찾기 위해 몇 가지 내부 함수를 사용하는 것이 좋습니다. 이것이 지속 가능한지 궁금하고 코드베이스에서 otehrs로 릴리스 할 수 있는지 궁금합니다.

그것이 가장 좋은 방법이라면, 가장 좋은 방법입니다. 나는 그것이 지저분한 느낌 때문에 절대적으로 확신하기 전에 그것을하고 싶지 않습니다.


현재로서는 현재의 요구에 맞는 내부 함수 ( _field_sql_storage_tablename($field)_field_sql_storage_columnname($field_name, $column)를 사용 했지만 지속 가능하지 않으므로이 질문에 대한 답변에 관심이있는 경우가 있습니다.
wizonesolutions

답변:


2

보기 필드 모듈은 뷰에 기본 테이블로 필드 테이블을 표시 할 수 있습니다. 이것은 기본 테이블이 필드 테이블이며 필드 데이터가로드되는 엔티티가 아니라는 점에서 기본 동작 과 다릅니다 . 예를 들어 노드를 기본 테이블로 선택할 때 필드를 추가 할 수 있지만 쿼리의 기본 (기본 테이블)은 여전히 ​​노드이므로 데이터에 따라 집계 함수 (일부 일대일 관계)를 망칠 수 있습니다. 노드에 필드).

뷰 필드를 사용하면 필드 테이블에 직접 액세스 할 수 있으므로 집계 함수가 올바르게 작동합니다. 또한 다른 필드 테이블에 "관심있는"조인을 수행해야하는 경우 다음을 사용하여 완전히 제어 할 수 있습니다.

/**
 * Implements hook_views_data_alter().
 */
function mymodule_views_data_alter(&$data) {
  views_field_add_multi_join($data, /* see docs */);
}

사용하기가 간단하고 여러 필드 테이블에서 한 번에 집계 함수를 수행 할 수 있습니다. 그런 다음 수동으로 뷰를 호출하고 뷰 $view->execute()에서 결과를 가져올 수 있습니다. 뷰 문서에 이에 대한 예가 있습니다.

EntityFieldQuery에 비해이 접근 방식의 이점은 뷰에서 프로세스를 관리하고 (거의 모든 사용자가 이미 사용중인) 실제 쿼리 작성을 덜 직접적인 방식으로 수행하여 가능한 분석을 향상시킬 수 있다는 것입니다. 또한 이러한 집계 데이터를 관리자 화면에 여러 번 표시하여 뷰를 사용하여 추가 목적으로 코드를 표시하고 결과에 액세스 할 수 있습니다.


이것을 확인해야합니다. 쿼리를 수동으로 수행하는 대신 해당 코드를 계산 된 필드로 바꿀 수 있습니다. 아마도 내가 곧 필요한 사이트에서 작업하고있을 것이고 어느 시점에서 다시보고 할 것입니다. 작동하면 동의합니다.
wizonesolutions

0

뷰에 대한 애드온 모듈에서이 작업을 수행 할 수 있습니까? 쿼리를 잘 처리하고 일부 결과는 컨텍스트 필터가 실패 할 때 모든 값을 기본값으로 사용하고 각 결과에서 사용 가능한 결과를 계산할 수있는 경우와 같은 집계 함수와 함께 집계됩니다. 쿼리에 대한 기능이 있어야하지만 UI 양식이 필요합니다. 이것이 의미가 있는지 알려주십시오. 나는 방금 전망을 분석하기 시작하고 있으며 추측하고 있습니다.


엔터티에서 COUNT 개의 쿼리를 실행할 수 있으므로 해결되었습니다. 나는 SUM에 더 관심이 있습니다. views_calc는 통찰력을 제공 할 수 있지만 Computed Field의 값을 사용하고 싶습니다 ... views_get_view_result (또는 유사한)로 잘 할 수 있습니다. 그러나 뷰를 가져 와서 해당 쿼리를 처음 생성하는 것은 속임수입니다. 해킹 방식이 가장 좋을 것 같습니다. 나는 그것을 풀지 않으면 황금색이기 때문에 나는 그것으로 시작할 것 같아요. 그렇다면 누군가가 패치를 제출하기를 바랍니다.
wizonesolutions
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.