コミュニティフォーラム (Japanese)

ようこそLookerの日本語コミュニティへ!リリースノートやイベントのご案内などは「ニュースと告知」、Lookerの製品機能に関するちょっとした疑問・質問は「ヘルプとサポート」、その他TIPsやデータにまつわる話は「コラム」のカテゴリへご投稿ください。みなさまの投稿・コメント、心よりお待ちしています!

134 Topics

BigQueryから返ってくるエラー `Error: Not found: Dataset XXXX was not found in location US`

BigQueryに格納されているデータを使用していると、時々下記のようなエラーに出くわします。 `Error: Not found: Dataset XXXX was not found in location US`https://stackoverflow.com/questions/51395256/error-not-found-dataset-my-project-namedomain-public-was-not-found-in-locatioこれはLooker側から発行されているエラーではなく、LookerがBigQueryにクエリを発行した際にBigQueryから返されるエラーです。 エラーの原因は様々ですが、下記のような場合にこのエラーが発生することがあるようです。・指定されたテーブルが見つからない・存在しない・異なるスキーマ内に同じ名称のテーブルが複数存在しているが、スキーマが指定されておらずどのテーブルを参照すれば良いかわからない 上記に原因がある場合は、Lookmlのsql_table_nameパラメーターにデータベース名・スキーマ名・テーブル名を記載することで解消できることがあります。 例:```view: desired_view_name {  sql_table_name: database_name.schema_name.table_name ;;}``` 様々な原因で発生するエラーのため、上記の解決法によって解決しない場合もございます。テーブルが参照できない状況にあるのではという観点で原因特定を実施することをおすすめします。

salesforceをIdPにしてSAMLでSSOする方法

LookerはSAMLに対応しており、SP-initiatedでSSOすることが可能です。 今回は、SalesforceをIdPとして接続し、Lookerにログインするための設定手順を以下に示します。 まず、salesforceをIdPとして利用できるようにするために、salesforceにて以下の設定がまず必要です。salesforceのヘルプを参照して、設定してください。 A. 私のドメインを登録 B. IDプロバイダの有効化 こちらが完了していることを前提に、今回の目的のための設定手順を説明します。 手順 Salesforceの接続アプリケーションを登録 1.1 設定画面に移動し、ID -> IDプロバイダ へ移動する 1.2 画面上部にある”証明書のダウンロード”ボタンをクリックし、証明書をダウンロードする ※ Lookerでの設定に利用 1.3 画面下部にあるサービスプロバイダのセクションにあるリンクをクリック 1.4 表示された画面の項目に、以下のLookerのインスタンスに関する情報を入力し、保存する 接続アプリケーション名: 任意の名前 (例 Looker) API参照名: 任意の名前 (例 Looker) 取引先責任者メール: システム管理者のメールアドレス 開始URL: LookerインスタンスのURL (例 https://xyz.jp.looker.com/) SAMLの有効化:チェック入れる エンティティID:任意のFQDN形式の文字列 ※Lookerでも同じ文字列をセットする必要あり ACS URL:LookerインスタンスのURL + /samlcallback (例 https://xyz.jp.looker.com/samlcallback) 件名識別:統合ID 名前ID形式:urn:oasis:names:tc:SAML:2.0:nameid-format:transient 発行者:任意のFQDN形式の文字列 ※Lookerでも同じ文字列をセットする必要あり Idp証明書:デフォルトのIdP証明書 他の項目は空白のまま 1.5 保存後、以下の画面にて"Manageボタン"をクリック 1.6 画面が切り替わった後、画面下部にあるプロファイルにて、"プロファイルを管理する"ボタンをクリックする 1.7 Loo

TopoJSON を利用した地図上での可視化分析 (500m メッシュ)

Lookerで地図上にデータを可視化する方法として、一番手軽なのは、topoJSONファイルを用意して可視化をする方法になります。ただし、topoJSON形式で表示する地図データは粒度が細かくなるほど、ファイルサイズが大きくなってしまうため、市区町村単位や、250m、500mメッシュという細かい粒度で表現するには向いていません。上記の場合は、タイルを利用した大規模カスタム・マップ・レイヤー を参照ください。 とはいえ、一部の地域に限定する形でも構わないので、タイルを利用せずにメッシュ表示を行うための方法をご紹介します。(なお、当記事で記載しているリンク先は執筆現在の情報ですので、変更があった場合は、コメントなどで教えていただけますと幸いです。また、LookMLの書き方以外の部分については、弊社サポートチームではご対応致しかねますので、本記事に関してのご質問はコメントにてお願いいたします) 今回は、東京都の中央区・千代田区・港区・新宿区の事業所数を500mメッシュで表示してみようと思います。実現するためには、以下の手順が必要となります。 境界線データの準備 データ表示用のサンプルデータの準備 LookMLの作成 なお、今回は、メッシュコードを利用して表示しています。メッシュコード については、e-Statのホームページに定義が記載されています 1. 境界線データの準備 まずは、地図上に表示する際に必要となる境界線データは、こちらの e-Statのホームページから境界線データを取得します。 今回は500mメッシュでの表示を行いますので、4次メッシュから世界測地系緯度経度・Shapefileを選択します。ファイルが1次メッシュ単位で区切られているのですが、東京都が含まれているのは、M5339となります。 このままでは、Lookerで取り扱えないのでファイルを変換する必要があるのですが、そのまま変換してしまうとファイルサイズが大きくなってしまうので分割を行います。 分割を行うために、 先ほどダウンロードしたZIPファイルを解凍する 含まれているdbf, prj, shp, shxをドラッグ&ドロップしてmapshaperというサイトでインポートします。 画面でExplortをクリックし、geoJSON形式してダウンロードします 次に、ダウンロードしたファ

BigQuery Standard SQLで、ネストされたデータをモデリングする

本記事は Modeling nested data in Big Query Standard SQL 🇺🇸 の翻訳記事です。 Big Queryの標準SQL(Standard SQL Dialects)のリリースされ、LookMLでネストされたデータセットをモデル化することがはるかに簡単になりました。 ネストされたファイルと繰り返しファイルがBigQueryでどのように機能し、それらがなぜ重要なのかについての簡単な入門については、 ダニエルの投稿 をご覧ください(訳注:こちらはリンク切れです)。 また、こちらのリンクからGoogle Analytics PremiumとGA360用のBlocksを参照できます。こちらをご覧いただければ、以下に示すプラグ・アンド・プレイですぐに使えるLookMLのコンセプトがよく理解できると思います。 以下に示す例は、ネストされた繰り返しフィールドを多用するGoogle Analytics Premium(GAP)をBig Queryにエクスポートしたデータセットに基づいています。 ネストされた繰り返しフィールド(例:STRUCTの配列)の結合ベースのクエリー、FLATTENSの置き換え Google Analytics Premiumスキーマには、セッションレベルのデータが格納されたテーブルが1つあり、個々のヒット(例えばイベント)レコードがそれぞれのセッション内にネストされています。ヒットレベルとセッションレベルのデータを同時にクエリする(たとえば、ヒットレベルとセッションレベルのデータを同時にカウントする(例えば、セッションの合計数とその時間内のヒット数の合計数)ために、これらの2つの異なるレベルのネストを参照するための新しい結合ベースの構文があります(ドキュメントはこちら )。 この構文を参考にし、モデルのセッションフィールドとヒットフィールドに個別のビューファイルを定義し、それらをExploreで結合します。 view: session { sql_table_name: `google.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_*` ;; # このViewファイルにセッションに関連する全てのディメンションとメジャーを定

プロジェクトのバージョン管理設定

本ページでは、バージョン管理で利用するGit連携について、どのように貴社プロジェクトで設定できるかを説明します。(🇺🇸本記事は、このヘルプ記事を翻訳したものになります) Project Settings Project Settingsページで設定を変更するためには、Looker管理者である必要があります。管理者ではないLooker開発者はProject Settingsページを閲覧することはできますが、変更することはできません。 Project Settingsページでは、プロジェクトの追加設定を行うことができます。このページを表示するためには、対象のプロジェクトを開き、GitメニューからProject Settingsを選択します。 Projects SettingsページConfigurationタブ上で、以下の設定を行えます: Name: プロジェクト名。 テキストを編集し、Save Project Settingsボタンをクリックすることで、リネームすることができます。詳細には、こちらを参照。 Code Quality: プロジェクトに対する変更をコミットする前に、開発者に対してLookML Validator を実行しエラーがない状態にすることを要求するかを選択します。以下のオプションがあります: Require fixing errors and warnings before committing: Looker開発者はLookML Validatorを実行し、すべてのエラーと警告を解消したときのみコミット可能。(推奨) Only require fixing errors before committing: Looker開発者は、LookML Validatorを実行し、すべてのエラーを解消したときのみコミット可能。警告が存在していてもコミット可能。推奨されていませんが、このオプションは、たとえば、Lookerのアップグレード後にLookMLの動作に新しい警告が導入される場合に役立ちます。 Allow committing broken code: Looker開発者は、LookML Validatorを実行せず、エラーや警告があったとしてもコミット可能。LookMLが機能しなかったり、誤った結果を生成する可

タイルを利用した大規模カスタム・マップ・レイヤー

本記事は、以下のトピックを参考に日本地図上でメッシュマップ表示を行う方法について記載しています。Large custom map_layers with tiles お客様からカスタム・マップを表示したいというご要望をいただくことがあります。まず、最初に思いつくのは、TopoJsonを利用する方法なのですが、日本全体を対象としたカスタムマップを作成しようとした場合、ファイルサイズが数百MBやGBとなってしまうことがあります。  幸運にも、無料もしくは低コストで実現する方法があります。実現するためには、いくつかの開発者ツール(コマンドラインなど)が必要ですが、Githubを以前に使用したことがある場合は、おそらく大丈夫です。  本手順を実施するためには、まず、マップ・レイヤーを表す単一のファイルが必要となります。Lookerへ直接ファイルをアップロードする場合には、ファイルフォーマットがTopoJsonである必要がありますが、今回の手順では、GeoJSON、KMLもしくはShape Fileである必要があります。Mapshaperをご利用いただくことで簡単にGeoJSON形式へ変換することも可能です。  今回のチュートリアルでは、日本全国を1km四方の単位に分割している3次メッシュのファイルを利用します。もととなるファイルは、こちらのe-Statからダウンロードしていますが、170近くのファイルをダウンロードして結合する必要があるため、変換済みのファイルをこちらにアップロードしてあります。(直接ダウンロードして結合されたい場合は、QGIS入門の記事を参考にQGISを利用して結合いただけます。)こちらをそのまま利用とした場合、ファイルすべてをブラウザ上にダウンロードしようとするために、ブラウザの動作が非常に重くなってしまうことは頑なに想像が可能です。  しかし、Googleマップを駆動するのと同じテクノロジー(タイル)を利用して、ファイルを扱いやすいものにすることができます。基本的な考え方は、ズームインした場合、ビューポートに表示されるのはわずかな領域だけなので、それらをロードするだけです。次に、パンしながら、隣接するものをロードします。  一方、ズームアウトして何千もの地域がある国の大きな地域を見ることができる場合、GeoJSONファイルにあるすべての詳細は実際には必

BigQuery のワイルドカードテーブルを1つのViewを通して検索する方法

BigQueryでは、以下のようなSuffix(接尾辞)付きのワイルドカードテーブルを、ワイルドカードを使って検索することが可能です。 テーブル例 log_table_20190101 log_table_20190102 log_table_20190103 ・・・ SQL例 SELECT * FROM `<project-id>.<dataset-id>.log_table_*` これらのテーブルに対して、Lookerにてcreate view from tableを行ってしまうと、log_table_20190101、log_table_20190102、log_table_20190103、・・・といった対となるViewがそれぞれ作成されてしまいます。このままでは、各テーブルにまたがった集計を行うのがとても不便です。そこで、これらのテーブルを一つのViewを通して一貫的に検索できるようにするためには、ViewおよびExploreにて行う必要があります。 まず以下の例のようにViewを記述する必要があります。_TABLE_SUFFIXをディメンションとして登録することで、WHERE句で適用可能な疑似列として利用できるようになります。 view: log_table { sql_table_name: `<dataset-id>.log_table_*` ;; dimension_group: partition { type: time sql: TIMESTAMP(PARSE_DATE('%Y%m%d', REGEXP_EXTRACT(_TABLE_SUFFIX,r'\d\d\d\d\d\d\d\d'))) ;; } 以下、必要なDimension, Measureを定義してください。 ・・・ } 次に、このViewを通してデータを探索するためには、以下の例のようにモデルでExploreを設定します。この時に、日付で検索対象のテーブルを絞り込まれるようにするために、connditionally_filterを使用しています。これにより、where句で_TABLE_SUFFIXを対して強制的にフィルターされるようになり、適切なパーティションフィルタリングが行われます。 explore:

Looker サクセスリソースまとめ

LookerではユーザーのみなさまがLookerの知識を深めていただけるよう様々なリソース・プログラムを用意しております。すべてのリソースは Lookerユーザーガイド を起点にご覧いただくことができますが、本記事では代表的なものについてまとめました。  ヘルプリソース & コミュニティ Looker Docs (日本語版 )公式のドキュメントです。Lookerの機能に関することはここを探せば大体記載されているというくらい内容が充実しています。迷ったらまずはDoc!徐々に日本語化も進んでいます。 Looker イントロダクション Lookerの基本的な機能・操作方法を理解できるようになります。 初めてLookerを触る場合はまずこちらからスタートしましょう! コンテンツの探し方 Lookerでのダッシュボードの表示 LookerでのLookの表示 ダッシュボード/Lookの送信 データのダウンロード スケジュール配信   リリースハイライト Lookerはほぼ毎月バージョンアップが行われます。常に最新機能をチェックしましょう!日本語訳はDiscourseの日本語フォーラム にて最速版をご確認いただけます。  Lookerコミュニティサイト世界中のLookerユーザーと繋がりましょう!日本語フォーラムはこちら LookerにまつわるTIPsや素朴な疑問など、お気軽に投稿ください! ヘルプセンターよくある質問と回答集 Looker Office HoursLookerのテクニカルメンバー(DCL)を中心に、LookML開発者の皆様を対象にワークショップ形式でLookerのテクニカルなノウハウやTIPSをご紹介します! 現在新型コロナウイルスの感染拡大防止の観点から、開催を見合わせております。次回開催のアップデートをお待ちください! Lookerユーザー会LookerユーザーによるLookerユーザーのためのMeetupが不定期で開催されています。Lookerの User MeetupはLookerユーザー会により運営されています! これまでの開催概要・各ユーザー企業様からの発表資料は以下をご覧ください(外部サイト)Looker User Meetup in Tokyo #2:オフライン開催 Looker User Meetup in Tokyo

強力なデータのドリルダウン

🇺🇸More Powerful Data Drilling🇺🇸 基本的なメジャーのドリルダウン Lookerのユニークな点の一つは、データベースに直接接続するところです。これは、常に新鮮なデータにアクセスでき かつ 常に最も細かい粒度のレベルまでドリルダウンできる事を意味します。そのため、もちろん年次や月次のサマリーを見ることができますが、Lookerは日、時間や秒にまで瞬時にドリルダウンするオプションを提供します。 常時のカテゴリ概要からはじめ、次に1つのカテゴリ(ジーンズ)の月次売上チャートにドリルダウンするのを以下で見ることができます。 さらにいろいろな使い方 しかし、LookerのWebネイティブのモダンなアーキテクチャは、1つのレベルから次の粒度までドリルダウンするだけでなく、もっと多くを実現できる事を意味しています。いくつかの簡単なパラメータを利用して、ユーザーが望む洗練されているカスタムドリルパスを構築することができます。 これを実証するために、以下で最も一般的なドリルパターンのいくつかのサンプルコードを作成しました。: 並べ替えと制限 (例:上位20件を表示) データのピボット トレンドラインを使用した高度なビジュアライゼーションへのドリルダウン D3とJavascriptで構築できるカスタムVizへのドリルダウン 条件付き書式を使用した表計算へのドリルダウン カスタム制限の追加 (5000まで) 最初の20件の結果を表示する LookML measure: returned_count { type: count_distinct sql: ${id} ;; filters: { field: is_returned value: "yes" } drill_fields: [detail*] link: {label: "Explore Top 20 Results" url: "{{ link }}&limit=20" } } 並べ替えの追加 売上上位20件を表示する LookML measure: returned_count { type: count_di

Refinementsを使ってLookMLのコードを整理する

本記事はこちらの英語記事🇺🇸 の翻訳です。 Looker 7.6 より LookML に refinements が追加されました。本記事では refinements がどのように動作するのかを説明したいと思います。また、関連するコードを一緒に管理するために、どのようにLookMLコードを整理、または「レイヤー化」すれば良いのかについて書いてみたいと思います。 Refinements とは? Refinementsは、ベースとなるLookMLのオブジェクトに対して変更を加えることができると言う意味で Extends(継承) とよく似ていますが、新しい名前のオブジェクトを新規に作成するのではなく、既存のオブジェクトに対して直接上書きして変更を加える言う点が異なります。 基本的な例を見てみましょう。プラス(+)記号に注意してください。 view: fact { sql_table_name: fact ;; } view: +fact { label: "Facts" dimension: date { type:date } } view: +fact { label: "Quantified Facts" dimension: amount { type:number } } これら3つの独立した宣言は、Extendsと同一のマージ規則にしがって効率的に結合されます。これは、以下の記述と同等です: view: fact { sql_table_name: fact ;; label: "Quantified Facts" dimension: date { type:date } dimension: amount { type:number } } これは非常に小さな変更であると同時に、非常に大きな変更でもあります!Refinementsの使い所はたくさんあるでしょう。例えば、LookML Blocks やプロジェクトをまたいでインポートされたLookMLのモデルなどです。ただ、ここでは、もう少し面白い、かつ広く適用可能な使用方法に着目してみたいと思います:チームで開発しているときに、LookMLプロジェクトをより管理しやすくする方法です。 LookML のレイヤー化 通常、LookMLは

新規のユーザーだけを Distinct しながら running_total (累計)を取得する

Lookerではテーブル計算でのrunning_total関数や、Measureでrunning_totalパラメータが準備されていますので、Explore上で簡単に累計値を取ることができます。ですが、例えばユーザーの新規純増分だけを抽出してその累計を出したい、と言うようなケースでは、少し工夫が必要になります。 こちらの記事にあるように、日付でソートし「一つ前の日付」を参照することで、そのユーザーが新規なのかどうかを判断することができます。これを使って、純増分のユーザー数をカウントすることでDISTINCTした累計を算出することができます。 考え方については前述の記事の通りなのですが、これをもう少し具体的に見ていきたいと思います。例えば、次のようなデータがあるとします。 田中 一郎は10-01に初回ログインをしており、10-03に2回目のログインをしています。同様に佐藤 次郎は10-01と10-02にログインをしています。このログインユーザーのUUを日別にとると、次のようなUUおよび累計になります。 ここで、10-01のUUは初日なので2で問題ありません。しかし、10-02の累計値は5になっています。10-02に着目すると佐藤 次郎は確かにログインをしているのですが、この人はすでに10-01にログイン済みなので、当該期間の延べ数としてカウントしたくありません。 そこで、それぞれのログインユーザーの「前回のログイン日」を参照することで、それぞれのユーザーが初めてログインしたのか、それとも以前にログインしたことがあるのかを区別するロジックを作って、これを実現してみます。ここではサブクエリーを書く必要がありますが、Lookerでは、このようなケースではネイティブ派生テーブルを利用すると、すっきりと記述することができます。 まず、先程のログイン日とログインユーザーIDを表示させている画面で、ギアマークから Get LookML をクリックします。 続いて、Derived Tableタブをクリックして、生成されたコードをクリップボードにコピーします。 得られたLookMLのコード(ネイティブ派生テーブルのコード)を、LookMLプロジェクトの中に記述します。このとき、View名をわかりやすいものに変更してください。 得られたネイティブ派生テーブルに二つの変更を追加しま

Lookerで表計算結果のランクを動的なフィルタとして使う - Qiita

※タイトル通り&ほとんどこの記事の和訳です。 やりたかったこと 事前にviewで定義しておくのではなく、粒度や集計軸を動的に変えられるランクをフィルタとして使いたかった。 ハードル 事前にviewで定義したrank dimensionを使うと、集計軸ごとに複数dimensionを作らなければいけない。 Explore上でTableCalcurations機能を使って作った計算結果はフィルタとして使えない。 使っているテクニック parameter Table Calculations Hide from Visualization Hide "No"s from Visualization やり方 ①viewに type: numberのdimension と parameterの2つを追加する。この時、dimensionのsql句ではparameterの名前を指定する。(この例ではmax_rank) parameter: max_rank { type: number } dimension: rank_limit { type: number sql: {% parameter max_rank %} ;; } ②Exploreに移動。好みの粒度で集計し、ソートをかけたところにさっき作成したdimension(例ではrank_limit)を追加。max_rankはfilterとして追加し、上位何件表示したいかを入力しておく。 (max_rankで入力した値はrank_limitに渡され、固定値として表示される) ③表計算を2つ作成。1つ目はRankで、どの指標でランキングを作成するかを指定。2つ目はBooleanで、前に作成したRank計算結果とrank_limitを比較するもの。戻り値はyesno型。 (この時、表計算を利用するため表の中に使っていないmeasureを使うことはできないので注意) ④作成した2つの表計算はHide from Visualizationする。 ⑤表計算結果であるshow_in_visualizationの設定から、Hide "No"s from Visualizationを選択すると、Noが返ってきている行がVisualizationに出てこなくなる。 解説 データベース上に存在しない値でもユーザー側から任

Looker 21.4 リリースノート

リリース予定スケジュール リリース開始日: 2021/3/14リリース完了およびダウンロード可能: 2021/3/25日本のお客様を含む地域は日本時間2021年 3月26日 4月9日 早朝頃に順次リリースを予定しています。リリース予定日は変更となる可能性があります。予めご了承ください。 リリース予定の変更など、リリースに関する重要な通知はLooker Technical Contacts 宛にメール配信されます。Lookerの管理画面よりTechnical Contactsの登録をお願い致します。その他リリースに関する概要はこちらをご参照ください。 レガシー機能の終了スケジュール 重要なお知らせ:オリジナルのリリースノート(英語版)は標準のLooker documentation にて掲載されます。以下リンクよりご参照ください。Looker 21.4 Release HighlightsLooker 21.4 Changelogその他日本語のLookerドキュメントリスト本スレッドへのコメントは公式には追跡されないことにご注意ください。ヘルプ・リクエストや障害報告については、新規トピックを追加いただくかLooker Help Centerからご連絡ください。 ​リリース・ハイライト Looker Mobile App - GA インクリメンタル (増分追加) PDT  Render Long Tables (実験的機能)  新カスタムViz: Force-Directed (力指向) グラフ 影響のある変更 その他の追加・変更・修正  Looker Mobile App - GAベータ版として提供されていたLooker Mobile App がGA (一般利用可能機能)となります。既にGoogle Play Storeではダウンロード可能、iOSにつきましては間もなくダウンロード可能となります。 GAバージョンは1.1.0となり、新しく改善されたダッシュボードエクスペリエンスが含まれ、アプリ内でバグやフィードバックを報告することが可能となります。 モバイルアプリ用のLabフラグである「Mobile App Integration」は, v21.4以降は撤廃されます。 v21.4以降すべてのLookerインスタンスについて、Looker m

Looks や Dashboards のSalesforce (SFDC)への埋め込み

🇺🇸 Embedding Looks and Dashboards into Salesforce (SFDC) in English 🇺🇸 多くのデータに精通した企業は、Salesforceのようなツールを運用するチームを持っています。一部のお客様は、LookerをSalesforceに組み込んで内部のデータベースからアカウントアクティビティのクイックビューやリード情報を閲覧できるようにしています。 以下は、LookerをSalesforceに埋め込む方法の例 です。 LookerをSalesforceに埋め込むには、各ユーザーにLookerのアクセス権限が必要です。データはSalesforceプラットフォームには渡されるのではなく、パラメータ化されたiFrameとして埋め込まれます。 始めるためにの簡単な手順を次に示します: 前提条件: Looker! Salesforce の管理者アカウント SFDCレコードとデータベース内レコード間のマッピング可能な関係(結合可能なキー) ステップ 1: VisualForceページを作成する((設定 - 開発 - ページ).ダッシュボードか単一のルック/クエリを挿入するかで、コードは若干異なりますl.要素をページに適切に合わせるために、幅と高さを調整する必要があります。 ダッシュボード 例 ダッシュボードまたはExploreのURLから、Salesforce変数を利用してクエリをフィルタリングするためのワイルドカードを挿入するだけです。最初の例では、ページの SalesforceアカウントIDを挿入し、 {!Account.Id}をLookerダッシュボードのsalesforce_userid フィルターに挿入します。通常のダッシュボードはURLの前に/embed/を付加する必要があることに注意してください。 <apex:page standardController="Account"> <apex:iframe src="https://example.looker.com/embed/dashboards/123?salesforce_userid={!Account.Id}" width="900px" height=